blob: 55fdabca343afcaafb2002d74da99d205b5c0ac5 [file] [log] [blame]
Derek Jones8ede1a22011-10-05 13:34:52 -05001##############
2Caching Driver
3##############
4
5CodeIgniter features wrappers around some of the most popular forms of
6fast and dynamic caching. All but file-based caching require specific
7server requirements, and a Fatal Exception will be thrown if server
8requirements are not met.
9
Derek Jones9fe093e2013-07-21 13:47:08 -070010.. contents::
11 :local:
12
13.. raw:: html
14
15 <div class="custom-index container"></div>
Derek Jones8ede1a22011-10-05 13:34:52 -050016
17*************
18Example Usage
19*************
20
21The following example will load the cache driver, specify `APC <#apc>`_
22as the driver to use, and fall back to file-based caching if APC is not
23available in the hosting environment.
24
25::
26
27 $this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
Derek Jonesca51e1a2013-07-21 13:35:02 -070028
Derek Jones8ede1a22011-10-05 13:34:52 -050029 if ( ! $foo = $this->cache->get('foo'))
30 {
31 echo 'Saving to the cache!<br />';
32 $foo = 'foobarbaz!';
Derek Jonesca51e1a2013-07-21 13:35:02 -070033
Derek Jones8ede1a22011-10-05 13:34:52 -050034 // Save into the cache for 5 minutes
35 $this->cache->save('foo', $foo, 300);
36 }
Derek Jonesca51e1a2013-07-21 13:35:02 -070037
Derek Jones8ede1a22011-10-05 13:34:52 -050038 echo $foo;
39
Andrey Andreev58c2b102012-10-26 14:42:29 +030040You can also prefix cache item names via the **key_prefix** setting, which is useful
41to avoid collisions when you're running multiple applications on the same environment.
42
43::
44
45 $this->load->driver('cache',
46 array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => 'my_')
47 );
48
49 $this->cache->get('foo'); // Will get the cache entry named 'my_foo'
50
Derek Jones9fe093e2013-07-21 13:47:08 -070051***************
52Class Reference
53***************
Derek Jones8ede1a22011-10-05 13:34:52 -050054
Derek Jonesca51e1a2013-07-21 13:35:02 -070055.. class:: CI_Cache
Derek Jones8ede1a22011-10-05 13:34:52 -050056
Derek Jonesca51e1a2013-07-21 13:35:02 -070057 .. method:: is_supported ( $driver )
Derek Jones8ede1a22011-10-05 13:34:52 -050058
Derek Jones9fe093e2013-07-21 13:47:08 -070059 :param string $driver: the name of the caching driver
60 :returns: TRUE if supported, FALSE if not
61 :rtype: Boolean
62
Derek Jones9046f202013-07-21 13:54:19 -070063 This method is automatically called when accessing drivers via
Derek Jones8ede1a22011-10-05 13:34:52 -050064 $this->cache->get(). However, if the individual drivers are used, make
Derek Jones9046f202013-07-21 13:54:19 -070065 sure to call this method to ensure the driver is supported in the
Derek Jones8ede1a22011-10-05 13:34:52 -050066 hosting environment.
Derek Jonesca51e1a2013-07-21 13:35:02 -070067
Derek Jones8ede1a22011-10-05 13:34:52 -050068 ::
Derek Jonesca51e1a2013-07-21 13:35:02 -070069
Derek Jones8ede1a22011-10-05 13:34:52 -050070 if ($this->cache->apc->is_supported()
71 {
72 if ($data = $this->cache->apc->get('my_cache'))
73 {
74 // do things.
75 }
76 }
77
78
Derek Jonesca51e1a2013-07-21 13:35:02 -070079 .. method:: get ( $id )
80
Derek Jones8ede1a22011-10-05 13:34:52 -050081 :param string $id: name of cached item
82 :returns: The item if it exists, FALSE if it does not
83 :rtype: Mixed
Derek Jonesca51e1a2013-07-21 13:35:02 -070084
Derek Jones9046f202013-07-21 13:54:19 -070085 This method will attempt to fetch an item from the cache store. If the
86 item does not exist, the method will return FALSE.
Derek Jones9fe093e2013-07-21 13:47:08 -070087
Derek Jones8ede1a22011-10-05 13:34:52 -050088 ::
89
90 $foo = $this->cache->get('my_cached_item');
91
92
Derek Jones9fe093e2013-07-21 13:47:08 -070093 .. method:: save ( $id , $data [, $ttl = 60])
Derek Jones8ede1a22011-10-05 13:34:52 -050094
95 :param string $id: name of the cached item
96 :param mixed $data: the data to save
97 :param int $ttl: Time To Live, in seconds (default 60)
98 :returns: TRUE on success, FALSE on failure
99 :rtype: Boolean
100
Derek Jones9046f202013-07-21 13:54:19 -0700101 This method will save an item to the cache store. If saving fails, the
102 method will return FALSE.
Derek Jones9fe093e2013-07-21 13:47:08 -0700103
Derek Jones8ede1a22011-10-05 13:34:52 -0500104 ::
105
106 $this->cache->save('cache_item_id', 'data_to_cache');
Derek Jonesca51e1a2013-07-21 13:35:02 -0700107
Derek Jones8ede1a22011-10-05 13:34:52 -0500108
Derek Jonesca51e1a2013-07-21 13:35:02 -0700109 .. method:: delete ( $id )
110
Derek Jones8ede1a22011-10-05 13:34:52 -0500111 :param string $id: name of cached item
112 :returns: TRUE if deleted, FALSE if the deletion fails
113 :rtype: Boolean
Derek Jonesca51e1a2013-07-21 13:35:02 -0700114
Derek Jones9046f202013-07-21 13:54:19 -0700115 This method will delete a specific item from the cache store. If item
116 deletion fails, the method will return FALSE.
Derek Jones9fe093e2013-07-21 13:47:08 -0700117
Derek Jones8ede1a22011-10-05 13:34:52 -0500118 ::
119
120 $this->cache->delete('cache_item_id');
121
Derek Jones8ede1a22011-10-05 13:34:52 -0500122
Derek Jonesca51e1a2013-07-21 13:35:02 -0700123 .. method:: clean ( )
124
Derek Jones8ede1a22011-10-05 13:34:52 -0500125 :returns: TRUE if deleted, FALSE if the deletion fails
126 :rtype: Boolean
Derek Jonesca51e1a2013-07-21 13:35:02 -0700127
Derek Jones9046f202013-07-21 13:54:19 -0700128 This method will 'clean' the entire cache. If the deletion of the
129 cache files fails, the method will return FALSE.
Derek Jones9fe093e2013-07-21 13:47:08 -0700130
Derek Jones8ede1a22011-10-05 13:34:52 -0500131 ::
132
133 $this->cache->clean();
134
Derek Jones8ede1a22011-10-05 13:34:52 -0500135
Derek Jonesca51e1a2013-07-21 13:35:02 -0700136 .. method:: cache_info ( )
Derek Jones8ede1a22011-10-05 13:34:52 -0500137
Derek Jones8ede1a22011-10-05 13:34:52 -0500138 :returns: information on the entire cache
139 :rtype: Mixed
Derek Jonesca51e1a2013-07-21 13:35:02 -0700140
Derek Jones9046f202013-07-21 13:54:19 -0700141 This method will return information on the entire cache.
Derek Jones9fe093e2013-07-21 13:47:08 -0700142
Derek Jones8ede1a22011-10-05 13:34:52 -0500143 ::
144
145 var_dump($this->cache->cache_info());
Derek Jonesca51e1a2013-07-21 13:35:02 -0700146
Derek Jones8ede1a22011-10-05 13:34:52 -0500147 .. note:: The information returned and the structure of the data is dependent
148 on which adapter is being used.
Derek Jonesca51e1a2013-07-21 13:35:02 -0700149
Derek Jones8ede1a22011-10-05 13:34:52 -0500150
Derek Jonesca51e1a2013-07-21 13:35:02 -0700151 .. method:: get_metadata ( $id )
152
Derek Jones8ede1a22011-10-05 13:34:52 -0500153 :param string $id: name of cached item
154 :returns: metadadta for the cached item
155 :rtype: Mixed
Derek Jonesca51e1a2013-07-21 13:35:02 -0700156
Derek Jones9046f202013-07-21 13:54:19 -0700157 This method will return detailed information on a specific item in the
Derek Jones9fe093e2013-07-21 13:47:08 -0700158 cache.
159
Derek Jones8ede1a22011-10-05 13:34:52 -0500160 ::
161
162 var_dump($this->cache->get_metadata('my_cached_item'));
163
164 .. note:: The information returned and the structure of the data is dependent
165 on which adapter is being used.
166
Derek Jones8ede1a22011-10-05 13:34:52 -0500167*******
168Drivers
169*******
170
171Alternative PHP Cache (APC) Caching
172===================================
173
Derek Jones9046f202013-07-21 13:54:19 -0700174All of the methods listed above can be accessed without passing a
Derek Jones8ede1a22011-10-05 13:34:52 -0500175specific adapter to the driver loader as follows::
176
177 $this->load->driver('cache');
178 $this->cache->apc->save('foo', 'bar', 10);
179
180For more information on APC, please see
Andrey Andreev58c2b102012-10-26 14:42:29 +0300181`http://php.net/apc <http://php.net/apc>`_.
Derek Jones8ede1a22011-10-05 13:34:52 -0500182
183File-based Caching
184==================
185
186Unlike caching from the Output Class, the driver file-based caching
187allows for pieces of view files to be cached. Use this with care, and
188make sure to benchmark your application, as a point can come where disk
189I/O will negate positive gains by caching.
190
Derek Jones9046f202013-07-21 13:54:19 -0700191All of the methods listed above can be accessed without passing a
Derek Jones8ede1a22011-10-05 13:34:52 -0500192specific adapter to the driver loader as follows::
193
194 $this->load->driver('cache');
195 $this->cache->file->save('foo', 'bar', 10);
196
197Memcached Caching
198=================
199
200Multiple Memcached servers can be specified in the memcached.php
Andrey Andreev58c2b102012-10-26 14:42:29 +0300201configuration file, located in the _application/config/* directory.
Derek Jones8ede1a22011-10-05 13:34:52 -0500202
Andrey Andreev58c2b102012-10-26 14:42:29 +0300203All of the methods listed above can be accessed without passing a
Derek Jones8ede1a22011-10-05 13:34:52 -0500204specific adapter to the driver loader as follows::
205
206 $this->load->driver('cache');
207 $this->cache->memcached->save('foo', 'bar', 10);
208
209For more information on Memcached, please see
Andrey Andreev58c2b102012-10-26 14:42:29 +0300210`http://php.net/memcached <http://php.net/memcached>`_.
211
212WinCache Caching
213================
214
215Under Windows, you can also utilize the WinCache driver.
216
Derek Jones9046f202013-07-21 13:54:19 -0700217All of the methods listed above can be accessed without passing a
Andrey Andreev58c2b102012-10-26 14:42:29 +0300218specific adapter to the driver loader as follows::
219
220 $this->load->driver('cache');
221 $this->cache->wincache->save('foo', 'bar', 10);
222
223For more information on WinCache, please see
224`http://php.net/wincache <http://php.net/wincache>`_.
225
226Redis Caching
227=============
228
229All of the methods listed above can be accessed without passing a
230specific adapter to the driver loader as follows::
231
232 $this->load->driver('cache');
233 $this->cache->redis->save('foo', 'bar', 10);
234
235.. important:: Redis may require one or more of the following options:
236 **host**, **post**, **timeout**, **password**.
237
238The Redis PHP extension repository is located at
239`https://github.com/nicolasff/phpredis <https://github.com/nicolasff/phpredis>`_.
Derek Jones8ede1a22011-10-05 13:34:52 -0500240
241Dummy Cache
242===========
243
244This is a caching backend that will always 'miss.' It stores no data,
245but lets you keep your caching code in place in environments that don't
Andrey Andreev58c2b102012-10-26 14:42:29 +0300246support your chosen cache.