2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< ? php  
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  CodeIgniter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  An  open  source  application  development  framework  for  PHP 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  This  content  is  released  under  the  MIT  License  ( MIT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-07 03:05:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2014  -  2019 ,  British  Columbia  Institute  of  Technology 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Permission  is  hereby  granted ,  free  of  charge ,  to  any  person  obtaining  a  copy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  of  this  software  and  associated  documentation  files  ( the  " Software " ),  to  deal 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  in  the  Software  without  restriction ,  including  without  limitation  the  rights 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  to  use ,  copy ,  modify ,  merge ,  publish ,  distribute ,  sublicense ,  and / or  sell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  copies  of  the  Software ,  and  to  permit  persons  to  whom  the  Software  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  furnished  to  do  so ,  subject  to  the  following  conditions : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  above  copyright  notice  and  this  permission  notice  shall  be  included  in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  all  copies  or  substantial  portions  of  the  Software . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  THE  SOFTWARE  IS  PROVIDED  " AS IS " ,  WITHOUT  WARRANTY  OF  ANY  KIND ,  EXPRESS  OR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  IMPLIED ,  INCLUDING  BUT  NOT  LIMITED  TO  THE  WARRANTIES  OF  MERCHANTABILITY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FITNESS  FOR  A  PARTICULAR  PURPOSE  AND  NONINFRINGEMENT .  IN  NO  EVENT  SHALL  THE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  AUTHORS  OR  COPYRIGHT  HOLDERS  BE  LIABLE  FOR  ANY  CLAIM ,  DAMAGES  OR  OTHER 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  LIABILITY ,  WHETHER  IN  AN  ACTION  OF  CONTRACT ,  TORT  OR  OTHERWISE ,  ARISING  FROM , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  OUT  OF  OR  IN  CONNECTION  WITH  THE  SOFTWARE  OR  THE  USE  OR  OTHER  DEALINGS  IN 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  THE  SOFTWARE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package 	CodeIgniter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ author 	EllisLab  Dev  Team 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ copyright 	Copyright  ( c )  2008  -  2014 ,  EllisLab ,  Inc .  ( https :// ellislab . com / ) 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-07 03:05:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ copyright 	Copyright  ( c )  2014  -  2019 ,  British  Columbia  Institute  of  Technology  ( https :// bcit . ca / ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ license 	https :// opensource . org / licenses / MIT 	MIT  License 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ link 	https :// codeigniter . com 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ since 	Version  2.0 . 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ filesource 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								defined ( 'BASEPATH' )  OR  exit ( 'No direct script access allowed' );  
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**  
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  CodeIgniter  Caching  Class 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ package 		CodeIgniter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ subpackage 	Libraries 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ category 	Core 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  @ author 		EllisLab  Dev  Team 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  @ link 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  CI_Cache  extends  CI_Driver_Library  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Valid  cache  drivers 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ var  array 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $valid_drivers  =  array ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										'apc' , 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-07 03:05:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										'apcu' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										'dummy' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										'file' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										'memcached' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										'redis' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										'wincache' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Path  of  cache  files  ( if  file - based  cache ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ var  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $_cache_path  =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Reference  to  the  driver 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ var  mixed 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $_adapter  =  'dummy' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Fallback  driver 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ var  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									protected  $_backup_driver  =  'dummy' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Cache  key  prefix 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ var 	string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  $key_prefix  =  '' ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Constructor 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Initialize  class  properties  based  on  the  configuration  array . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param 	array 	$config  =  array () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	void 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  __construct ( $config  =  array ()) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										isset ( $config [ 'adapter' ])  &&  $this -> _adapter  =  $config [ 'adapter' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										isset ( $config [ 'backup' ])  &&  $this -> _backup_driver  =  $config [ 'backup' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										isset ( $config [ 'key_prefix' ])  &&  $this -> key_prefix  =  $config [ 'key_prefix' ]; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										// If the specified adapter isn't available, check the backup.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  (  !  $this -> is_supported ( $this -> _adapter )) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if  (  !  $this -> is_supported ( $this -> _backup_driver )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Backup isn't supported either. Default to 'Dummy' driver.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												log_message ( 'error' ,  'Cache adapter "' . $this -> _adapter . '" and backup "' . $this -> _backup_driver . '" are both unavailable. Cache is now using "Dummy" adapter.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$this -> _adapter  =  'dummy' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												// Backup is supported. Set it to primary.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												log_message ( 'debug' ,  'Cache adapter "' . $this -> _adapter . '" is unavailable. Falling back to "' . $this -> _backup_driver . '" backup adapter.' ); 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												$this -> _adapter  =  $this -> _backup_driver ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Get 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Look  for  a  value  in  the  cache .  If  it  exists ,  return  the  data 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 *  if  not ,  return  FALSE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	mixed 	value  matching  $id  or  FALSE  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  get ( $id ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> get ( $this -> key_prefix . $id ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Cache  Save 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$id 	Cache  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param 	mixed 	$data 	Data  to  store 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param 	int 	$ttl 	Cache  TTL  ( in  seconds ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param 	bool 	$raw 	Whether  to  store  the  raw  value 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	bool 	TRUE  on  success ,  FALSE  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  save ( $id ,  $data ,  $ttl  =  60 ,  $raw  =  FALSE ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> save ( $this -> key_prefix . $id ,  $data ,  $ttl ,  $raw ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Delete  from  Cache 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$id 	Cache  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	bool 	TRUE  on  success ,  FALSE  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  delete ( $id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> delete ( $this -> key_prefix . $id ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Increment  a  raw  value 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$id 	Cache  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param 	int 	$offset 	Step / value  to  add 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	mixed 	New  value  on  success  or  FALSE  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  increment ( $id ,  $offset  =  1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> increment ( $this -> key_prefix . $id ,  $offset ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Decrement  a  raw  value 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$id 	Cache  ID 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ param 	int 	$offset 	Step / value  to  reduce  by 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	mixed 	New  value  on  success  or  FALSE  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  decrement ( $id ,  $offset  =  1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> decrement ( $this -> key_prefix . $id ,  $offset ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Clean  the  cache 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ return 	bool 	TRUE  on  success ,  FALSE  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  clean () 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> clean (); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Cache  Info 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$type  =  'user' 	user / filehits 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	mixed 	array  containing  cache  info  on  success  OR  FALSE  on  failure 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  cache_info ( $type  =  'user' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> cache_info ( $type ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Get  Cache  Metadata 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$id 	key  to  get  cache  metadata  on 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	mixed 	cache  item  metadata 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  get_metadata ( $id ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $this -> { $this -> _adapter } -> get_metadata ( $this -> key_prefix . $id ); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  Is  the  requested  driver  supported  in  this  environment ? 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									 *  @ param 	string 	$driver 	The  driver  to  test 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return 	array 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									public  function  is_supported ( $driver ) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										static  $support ; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  (  !  isset ( $support ,  $support [ $driver ])) 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											$support [ $driver ]  =  $this -> { $driver } -> is_supported (); 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-11-07 08:45:06 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  $support [ $driver ]; 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2021-11-07 03:05:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// ------------------------------------------------------------------------
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/** 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  Get  currently  loaded  driver 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 *  @ return  string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									public  function  get_loaded_driver () 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  $this -> _adapter ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2011-04-25 23:24:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}