cvs: php4 /pear/Cache/Container file.php

From: Date: Tue, 06 Mar 2001 13:25:45 +0000
Subject: cvs: php4 /pear/Cache/Container file.php
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4407@lists.php.net to get a copy of this message
chregu Tue Mar 6 05:25:45 2001 EDT Modified files: /php4/pear/Cache/Container file.php Log: deleteDir deletes now the created "group"-Directories as well. Hope it works on windows as well... Index: php4/pear/Cache/Container/file.php diff -u php4/pear/Cache/Container/file.php:1.4 php4/pear/Cache/Container/file.php:1.5 --- php4/pear/Cache/Container/file.php:1.4 Sat Mar 3 11:02:54 2001 +++ php4/pear/Cache/Container/file.php Tue Mar 6 05:25:43 2001 @@ -16,7 +16,7 @@ // | Sebastian Bergmann <sb@sebastian-bergmann.de> | // +----------------------------------------------------------------------+ // -// $Id: file.php,v 1.4 2001/03/03 19:02:54 uw Exp $ +// $Id: file.php,v 1.5 2001/03/06 13:25:43 chregu Exp $ require_once 'Cache/Container.php'; @@ -24,7 +24,7 @@ * Stores cache contents in a file. * * @author Ulf Wendel <ulf.wendel@phpdoc.de> -* @version $Id: file.php,v 1.4 2001/03/03 19:02:54 uw Exp $ +* @version $Id: file.php,v 1.5 2001/03/06 13:25:43 chregu Exp $ */ class Cache_Container_file extends Cache_Container { @@ -53,35 +53,35 @@ * @var string */ var $filename_prefix = ""; - + /** * Creates the cache directory if neccessary * * @param array Config options: ["cache_dir" => ..., "filename_prefix" => ...] */ function Cache_Container_file($options = "") { - + if (is_array($options)) $this->setOptions($options, array("cache_dir", "filename_prefix")); - + clearstatcache(); if (!file_exists($this->cache_dir) || !is_dir($this->cache_dir)) mkdir($this->cache_dir, 0755); - + } // end func contructor function fetch($id, $group) { - + $file = $this->getFilename($id, $group); - if (!file_exists($file)) + if (!file_exists($file)) return array(NULL, NULL, NULL); - + // retrive the content if (!($fh = @fopen($file, "rb"))) return new CacheError("Can't access cache file '$file'. Check access rights and path.", __FILE__, __LINE__); - + // file format: // 1st line: expiration date // 2nd line: user data @@ -102,13 +102,13 @@ * otherwise it will break the filestructure. */ function save($id, $cachedata, $expires, $group, $userdata) { - + $this->flushPreload($id, $group); - + $file = $this->getFilename($id, $group); if (!($fh = @fopen($file, "wb"))) return new CacheError("Can't access '$file' to store cache data. Check access rights and path.", __FILE__, __LINE__); - + // file format: // 1st line: expiration date // 2nd line: user data @@ -123,28 +123,28 @@ // I'm not sure if we need this touch($file); - return true; + return true; } // end func save function delete($id, $group) { - + $this->flushPreload($id, $group); - + $file = $this->getFilename($id, $group); if (file_exists($file)) { - + $ok = unlink($file); clearstatcache(); return $ok; } - - return false; + + return false; } // end func delete function flush($group) { - + $this->flushPreload(); $dir = ($group) ? $this->cache_dir . $group . "/" : $this->cache_dir; @@ -153,8 +153,8 @@ return $num_removed; } // end func flush - + function idExists($id, $group) { return file_exists($this->getFilename($id, $group)); @@ -176,24 +176,24 @@ * recursive function call! */ function garbageCollection($dir = "") { - - $this->flushPreload(); + + $this->flushPreload(); if (!$dir) $dir = $this->cache_dir; if (!($dh = opendir($dir))) return new CacheError("Can't access cache directory '$dir'. Check permissions and path.", __FILE__, __LINE__); - + while ($file = readdir($dh)) { if ("." == $file || ".." == $file) continue; - + $file = $dir . $file; if (is_dir($file)) $this->garbageCollection($file . "/"); - - // skip trouble makers but inform the user + + // skip trouble makers but inform the user if (!($fh = @fopen($file, "rb"))) { new CacheError("Can't access cache file '$file', skipping it. Check permissions and path.", __FILE__, __LINE__); continue; @@ -205,8 +205,8 @@ // remove if expired if ($expire && $expire <= time() && !unlink($file)) new CacheError("Can't unlink cache file '$file', skipping. Check permissions and path.", __FILE__, __LINE__); - } - + } + closedir($dh); // flush the disk state cache @@ -228,14 +228,14 @@ if (isset($group_dirs[$group])) return $group_dirs[$group] . $this->filename_prefix . $id; - - + + $dir = $this->cache_dir . $group . "/"; if (!file_exists($dir)) { mkdir($dir, 0755); clearstatcache(); } - + $group_dirs[$group] = $dir; return $dir . $this->filename_prefix . $id; @@ -250,16 +250,16 @@ * @throws CacheError */ function deleteDir($dir) { - + if (!($dh = opendir($dir))) return new CacheError("Can't remove directory '$dir'. Check permissions and path.", __FILE__, __LINE__); - + $num_removed = 0; - + while ($file = readdir($dh)) { if ("." == $file || ".." == $file) continue; - + $file = $dir . $file; if (is_dir($file)) { @@ -272,15 +272,22 @@ if (unlink($file)) $num_removed++; - + } - - + + } + // according to php-manual the following is needed for windows installations. + closedir($dh); + unset( $dh); + if ($dir != $this->cache_dir) { //delete the sub-dir entries itself also, but not the cache-dir. + rmDir($dir); + $num_removed++; + } return $num_removed; } // end func deleteDir - + } // end class file -?> \ No newline at end of file +?>

« previous php.cvs (#4407) next »