• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List

E:/E/GEAMP/www/openbiz/openbiz/others/Zend/Cache/Backend/Xcache.php

00001 <?php
00027 require_once 'Zend/Cache/Backend/Interface.php';
00028 
00032 require_once 'Zend/Cache/Backend.php';
00033 
00034 
00041 class Zend_Cache_Backend_Xcache extends Zend_Cache_Backend implements Zend_Cache_Backend_Interface
00042 {
00043 
00047     const TAGS_UNSUPPORTED_BY_CLEAN_OF_XCACHE_BACKEND = 'Zend_Cache_Backend_Xcache::clean() : tags are unsupported by the Xcache backend';
00048     const TAGS_UNSUPPORTED_BY_SAVE_OF_XCACHE_BACKEND =  'Zend_Cache_Backend_Xcache::save() : tags are unsupported by the Xcache backend';
00049 
00061     protected $_options = array(
00062         'user' => null,
00063         'password' => null
00064     );
00065 
00073     public function __construct(array $options = array())
00074     {
00075         if (!extension_loaded('xcache')) {
00076             Zend_Cache::throwException('The xcache extension must be loaded for using this backend !');
00077         }
00078         parent::__construct($options);
00079     }
00080 
00090     public function load($id, $doNotTestCacheValidity = false)
00091     {
00092         if ($doNotTestCacheValidity) {
00093             $this->_log("Zend_Cache_Backend_Xcache::load() : \$doNotTestCacheValidity=true is unsupported by the Xcache backend");
00094         }
00095         $tmp = xcache_get($id);
00096         if (is_array($tmp)) {
00097             return $tmp[0];
00098         }
00099         return false;
00100     }
00101 
00108     public function test($id)
00109     {
00110         if (xcache_isset($id)) {
00111             $tmp = xcache_get($id);
00112             if (is_array($tmp)) {
00113                 return $tmp[1];
00114             }
00115         }
00116         return false;
00117     }
00118 
00131     public function save($data, $id, $tags = array(), $specificLifetime = false)
00132     {
00133         $lifetime = $this->getLifetime($specificLifetime);
00134         $result = xcache_set($id, array($data, time()), $lifetime);
00135         if (count($tags) > 0) {
00136             $this->_log(self::TAGS_UNSUPPORTED_BY_SAVE_OF_XCACHE_BACKEND);
00137         }
00138         return $result;
00139     }
00140 
00147     public function remove($id)
00148     {
00149         return xcache_unset($id);
00150     }
00151 
00167     public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array())
00168     {
00169         switch ($mode) {
00170             case Zend_Cache::CLEANING_MODE_ALL:
00171                 // Necessary because xcache_clear_cache() need basic authentification
00172                 $backup = array();
00173                 if (isset($_SERVER['PHP_AUTH_USER'])) {
00174                     $backup['PHP_AUTH_USER'] = $_SERVER['PHP_AUTH_USER'];
00175                 }
00176                 if (isset($_SERVER['PHP_AUTH_PW'])) {
00177                     $backup['PHP_AUTH_PW'] = $_SERVER['PHP_AUTH_PW'];
00178                 }
00179                 if ($this->_options['user']) {
00180                     $_SERVER['PHP_AUTH_USER'] = $this->_options['user'];
00181                 }
00182                 if ($this->_options['password']) {
00183                     $_SERVER['PHP_AUTH_PW'] = $this->_options['password'];
00184                 }
00185                 xcache_clear_cache(XC_TYPE_VAR, 0);
00186                 if (isset($backup['PHP_AUTH_USER'])) {
00187                     $_SERVER['PHP_AUTH_USER'] = $backup['PHP_AUTH_USER'];
00188                     $_SERVER['PHP_AUTH_PW'] = $backup['PHP_AUTH_PW'];
00189                 }
00190                 return true;
00191                 break;
00192             case Zend_Cache::CLEANING_MODE_OLD:
00193                 $this->_log("Zend_Cache_Backend_Xcache::clean() : CLEANING_MODE_OLD is unsupported by the Xcache backend");
00194                 break;
00195             case Zend_Cache::CLEANING_MODE_MATCHING_TAG:
00196             case Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG:
00197             case Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG:
00198                 $this->_log(self::TAGS_UNSUPPORTED_BY_CLEAN_OF_XCACHE_BACKEND);
00199                 break;
00200             default:
00201                 Zend_Cache::throwException('Invalid mode for clean() method');
00202                 break;
00203         }
00204     }
00205 
00211     public function isAutomaticCleaningAvailable()
00212     {
00213         return false;
00214     }
00215 
00216 }

Generated on Thu Apr 19 2012 17:01:16 for openbiz by  doxygen 1.7.2