| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * APC CacheResource | 
					
						
							|  |  |  |  * CacheResource Implementation based on the KeyValueStore API to use | 
					
						
							|  |  |  |  * memcache as the storage resource for Smarty's output caching. | 
					
						
							|  |  |  |  * * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |  * @package CacheResource-examples | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |  * @author  Uwe Tews | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  | class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     public function __construct() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // test if APC is present
 | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |         if (!function_exists('apc_cache_info')) { | 
					
						
							| 
									
										
										
										
											2011-09-19 20:17:22 +00:00
										 |  |  |             throw new Exception('APC Template Caching Error: APC is not installed'); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Read values for a set of keys from cache | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param  array $keys list of keys to fetch | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  |      * @return array   list of values with the given keys used as indexes | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |      * @return boolean true on success, false on failure | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected function read(array $keys) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $_res = array(); | 
					
						
							|  |  |  |         $res = apc_fetch($keys); | 
					
						
							|  |  |  |         foreach ($res as $k => $v) { | 
					
						
							|  |  |  |             $_res[$k] = $v; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return $_res; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Save values for a set of keys to cache | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param  array $keys   list of values to save | 
					
						
							|  |  |  |      * @param  int   $expire expiration time | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |      * @return boolean true on success, false on failure | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |     protected function write(array $keys, $expire = null) | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |     { | 
					
						
							|  |  |  |         foreach ($keys as $k => $v) { | 
					
						
							|  |  |  |             apc_store($k, $v, $expire); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Remove values from cache | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2014-06-06 02:40:04 +00:00
										 |  |  |      * @param  array $keys list of keys to delete | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |      * @return boolean true on success, false on failure | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected function delete(array $keys) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         foreach ($keys as $k) { | 
					
						
							|  |  |  |             apc_delete($k); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2013-07-14 22:15:45 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-16 14:19:56 +00:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Remove *all* values from cache | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return boolean true on success, false on failure | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     protected function purge() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return apc_clear_cache('user'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |