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

E:/E/GEAMP/www/openbiz/openbiz/others/Zend/Cache/Frontend/File.php

00001 <?php
00027 require_once 'Zend/Cache/Core.php';
00028 
00029 
00036 class Zend_Cache_Frontend_File extends Zend_Cache_Core
00037 {
00038 
00042     const MODE_AND = 'AND';
00043     const MODE_OR  = 'OR';
00044 
00066     protected $_specificOptions = array(
00067         'master_file' => null,
00068         'master_files' => null,
00069         'master_files_mode' => 'OR',
00070         'ignore_missing_master_files' => false
00071     );
00072 
00080     private $_masterFile_mtimes = null;
00081 
00089     public function __construct(array $options = array())
00090     {
00091         while (list($name, $value) = each($options)) {
00092             $this->setOption($name, $value);
00093         }
00094         if (!isset($this->_specificOptions['master_files'])) {
00095             Zend_Cache::throwException('master_files option must be set');
00096         }
00097     }
00098 
00104     public function setMasterFiles($masterFiles)
00105     {
00106         clearstatcache();
00107         $this->_specificOptions['master_file'] = $masterFiles[0]; // to keep a compatibility
00108         $this->_specificOptions['master_files'] = $masterFiles;
00109         $this->_masterFile_mtimes = array();
00110         $i = 0;
00111         foreach ($masterFiles as $masterFile) {
00112             $this->_masterFile_mtimes[$i] = @filemtime($masterFile);
00113             if ((!($this->_specificOptions['ignore_missing_master_files'])) && (!($this->_masterFile_mtimes[$i]))) {
00114                 Zend_Cache::throwException('Unable to read master_file : '.$masterFile);
00115             }
00116             $i++;
00117         }
00118     }
00119 
00128     public function setMasterFile($masterFile)
00129     {
00130           $this->setMasterFiles(array(0 => $masterFile));
00131     }
00132 
00143     public function setOption($name, $value)
00144     {
00145         if ($name == 'master_file') {
00146             $this->setMasterFile($value);
00147         } else if ($name == 'master_files') {
00148             $this->setMasterFiles($value);
00149         } else {
00150             parent::setOption($name, $value);
00151         }
00152     }
00153 
00162     public function load($id, $doNotTestCacheValidity = false, $doNotUnserialize = false)
00163     {
00164         if (!$doNotTestCacheValidity) {
00165             if ($this->test($id)) {
00166                 return parent::load($id, true, $doNotUnserialize);
00167             }
00168             return false;
00169         }
00170         return parent::load($id, true, $doNotUnserialize);
00171     }
00172 
00179     public function test($id)
00180     {
00181         $lastModified = parent::test($id);
00182         if ($lastModified) {
00183             if ($this->_specificOptions['master_files_mode'] == self::MODE_AND) {
00184                 // MODE_AND
00185                 foreach($this->_masterFile_mtimes as $masterFileMTime) {
00186                     if ($masterFileMTime) {
00187                         if ($lastModified > $masterFileMTime) {
00188                             return $lastModified;
00189                         }
00190                     }
00191                 }
00192             } else {
00193                 // MODE_OR
00194                 $res = true;
00195                 foreach($this->_masterFile_mtimes as $masterFileMTime) {
00196                     if ($masterFileMTime) {
00197                         if ($lastModified <= $masterFileMTime) {
00198                             return false;
00199                         }
00200                     }
00201                 }
00202                 return $lastModified;
00203             }
00204         }
00205         return false;
00206     }
00207 
00208 }
00209 

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