Mailinglisten-Archive |
Hallo Zusammen, Damit ich dynamische Seiten auf dem Server cachen kann, habe ich folgende Klasse geschrieben. Nun kommt es zwischendurch vor, dass die erzeugten Dateien 0 Bytes gross sind. Wie könnte man dieses Problem beheben? <?php /* Aufruf: $cache = &new cache(120); if($cache->startCache()) { exit; } /// page /// $template->parse("CONTENT_FILE","CONTENT"); $template->parse("SIDEBAR_FILE","SIDEBAR"); $template->pparse(OUT,"INDEX"); /// end page /// $cache->endCache(); */ class cache { var $cacheFilename; var $uniquePageId; var $cacheDir; var $maxAge; var $cacheIsEnabled; function cache($maxAge=30) { /* $maxAge is the number of minutes to allow a cached copy to be used before generating a new copy. set this to -1 to use any available cached copy no matter how old. */ $this->_checkPermission(); if($this->cacheIsEnabled) { $this->maxAge = $maxAge; $this->uniquePageId = $_SERVER['REQUEST_URI']; $this->cacheDir = 'cached_files/'; $this->cacheFilename = $this->cacheDir.md5($this->uniquePageId); //$this->cacheFilename = $this->cacheDir.$this->uniquePageId; } } function _checkPermission() { global $_CONFIG; //$_CONFIG['enableCaching'] = FALSE; if(!isset($_CONFIG['enableCaching']) OR !$_CONFIG['enableCaching']) { $this->cacheIsEnabled = FALSE; } else { $this->cacheIsEnabled = TRUE; } } function startCache() { if($this->cacheIsEnabled) { if(is_file($this->cacheFilename)) { if(($this->maxAge == -1) || (filemtime($this->cacheFilename) > (time() - ($this->maxAge * 60)))) { readfile($this->cacheFilename); return true; } } else { ob_start(); } } } function endCache() { if($this->cacheIsEnabled) { $cacheContents = ob_get_contents(); ob_end_flush(); $fp = fopen($this->cacheFilename, 'w'); fwrite($fp, $cacheContents); fclose($fp); } } } ?>
php::bar PHP Wiki - Listenarchive