chregu          Sat Mar 17 08:06:31 2001 EDT

  Modified files:              
    /php4/pear  Cache.php 
    /php4/pear/Cache    Output.php 
  Log:
  GarbageCollection was moved into a PEAR-Deconstructor
  
  
Index: php4/pear/Cache.php
diff -u php4/pear/Cache.php:1.7 php4/pear/Cache.php:1.8
--- php4/pear/Cache.php:1.7     Thu Mar  8 12:41:39 2001
+++ php4/pear/Cache.php Sat Mar 17 08:06:31 2001
@@ -16,7 +16,7 @@
 // |          Sebastian Bergmann <[EMAIL PROTECTED]>               |
 // +----------------------------------------------------------------------+
 //
-// $Id: Cache.php,v 1.7 2001/03/08 20:41:39 uw Exp $
+// $Id: Cache.php,v 1.8 2001/03/17 16:06:31 chregu Exp $
 
 require_once "Cache/Error.php";
 
@@ -25,12 +25,16 @@
 *
 * TODO: Simple usage example goes here.
 *
+* WARNING: No File/DB-Table-Row locking is implemented yet,
+*          it's possible, that you get corrupted data-entries under
+*          bad circumstances  (especially with the file container)
+*
 * @author   Ulf Wendel <[EMAIL PROTECTED]>
-* @version  $Id: Cache.php,v 1.7 2001/03/08 20:41:39 uw Exp $
+* @version  $Id: Cache.php,v 1.8 2001/03/17 16:06:31 chregu Exp $
 * @package  Cache
-* @access   public 
+* @access   public
 */
-class Cache {
+class Cache extends PEAR {
 
     /**
     * Disables the caching.
@@ -45,8 +49,8 @@
     /**
     * Garbage collection: probability in seconds
     *
-    * If set to a value above 0 a garbage collection will 
-    * flush all cache entries older than the specified number 
+    * If set to a value above 0 a garbage collection will
+    * flush all cache entries older than the specified number
     * of seconds.
     *
     * @var      integer
@@ -68,35 +72,40 @@
 
     /**
     * Storage container object.
-    * 
+    *
     * @var  object Cache_Container
-    */    
+    */
     var $container;
 
     //
     // public methods
     //
 
-    /**    
+    /**
     *
     * @param    string  Name of storage container class
     * @param    array   Array with storage class dependend config options
     */
     function Cache($storage_driver, $storage_options = "")
     {
+        $this->PEAR();
         $storage_driver = strtolower($storage_driver);
         $storage_class = 'Cache_Container_' . $storage_driver;
         $storage_classfile = 'Cache/Container/' . $storage_driver . '.php';
 
         include_once $storage_classfile;
         $this->container = new $storage_class($storage_options);
+    }
+
+    //deconstructor
+    function _Cache()
+    {
         $this->garbageCollection();
-        
     }
 
     /**
     * Returns the requested dataset it if exists and is not expired
-    *  
+    *
     * @param    string  dataset ID
     * @param    string  cache group
     * @return   mixed   cached data or NULL on failure
@@ -105,16 +114,16 @@
     function get($id, $group = "default") {
         if ($this->no_cache)
             return "";
-            
+
         if ($this->isCached($id, $group) && !$this->isExpired($id, $group))
             return $this->load($id, $group);
-        
-        return NULL;            
+
+        return NULL;
     } // end func get
 
     /**
     * Stores the given data in the cache.
-    * 
+    *
     * @param    string  dataset ID used as cache identifier
     * @param    mixed   data to cache
     * @param    integer lifetime of the cached data in seconds - 0 for endless
@@ -125,13 +134,13 @@
     function save($id, $data, $expires = 0, $group = "default") {
         if ($this->no_cache)
             return true;
-            
+
         return $this->container->save($id, $data, $expires, $group, "");
     } // end func save
 
     /**
     * Stores a dataset without additional userdefined data.
-    * 
+    *
     * @param    string  dataset ID
     * @param    mixed   data to store
     * @param    string  additional userdefined data
@@ -151,16 +160,16 @@
 
     /**
     * Loads the given ID from the cache.
-    * 
+    *
     * @param    string  dataset ID
     * @param    string  cache group
-    * @return   mixed   cached data or NULL on failure 
+    * @return   mixed   cached data or NULL on failure
     * @access   public
     */
     function load($id, $group = "default") {
         if ($this->no_cache)
             return "";
-            
+
         return $this->container->load($id, $group);
     } // end func load
 
@@ -176,13 +185,13 @@
     function getUserdata($id, $group = "default") {
         if ($this->no_cache)
             return "";
-            
+
         return $this->container->getUserdata($id, $group);
     } // end func getUserdata
 
     /**
     * Removes the specified dataset from the cache.
-    * 
+    *
     * @param    string  dataset ID
     * @param    string  cache group
     * @return   boolean
@@ -191,28 +200,28 @@
     function delete($id, $group = "default") {
         if ($this->no_cache)
             return true;
-            
+
         return $this->container->delete($id, $group);
     } // end func delete
 
     /**
     * Flushes the cache - removes all data from it
-    * 
+    *
     * @param    string  cache group, if empty all groups will be flashed
     * @return   integer number of removed datasets
     */
     function flush($group = "") {
         if ($this->no_cache)
             return true;
-            
+
         return $this->container->flush($group);
     } // end func flush
 
     /**
     * Checks if a dataset exists.
-    * 
+    *
     * Note: this does not say that the cached data is not expired!
-    * 
+    *
     * @param    string  dataset ID
     * @param    string  cache group
     * @return   boolean
@@ -221,20 +230,20 @@
     function isCached($id, $group = "default") {
         if ($this->no_cache)
             return false;
-            
+
         return $this->container->isCached($id, $group);
     } // end func isCached
 
     /**
     * Checks if a dataset is expired
-    * 
+    *
     * @param    string  dataset ID
     * @param    string  cache group
     * @param    integer maximum age for the cached data in seconds - 0 for endless
     *                   If the cached data is older but the given lifetime it will
-    *                   be removed from the cache. You don't have to provide this 
-    *                   argument if you call isExpired(). Every dataset knows 
-    *                   it's expire date and will be removed automatically. Use 
+    *                   be removed from the cache. You don't have to provide this
+    *                   argument if you call isExpired(). Every dataset knows
+    *                   it's expire date and will be removed automatically. Use
     *                   this only if you know what you're doing...
     * @return   boolean
     * @access   public
@@ -242,13 +251,13 @@
     function isExpired($id, $group = "default", $max_age = 0) {
         if ($this->no_cache)
             return true;
-            
+
         return $this->container->isExpired($id, $group, $max_age);
     } // end func isExpired
 
     /**
     * Generates a "unique" ID for the given value
-    * 
+    *
     * This is a quick but dirty hack to get a "unique" ID for a any kind of variable.
     * ID clashes might occur from time to time although they are extreme unlikely!
     *
@@ -263,24 +272,24 @@
 
     /**
     * Calls the garbage collector of the storage object with a certain probability
-    * 
+    *
     * @param    boolean Force a garbage collection run?
     * @see  $gc_probability, $gc_time
     */
     function garbageCollection($force = false) {
         static $last_run = 0;
-        
+
         if ($this->no_cache)
             return;
 
         srand((double) microtime() * 1000000);
-        
+
         // time and probability based
         if (($force) || ($last_run && $last_run < time() + $this->gc_time) || 
(rand(1, 100) < $this->gc_probability)) {
             $this->container->garbageCollection();
             $last_run = time();
         }
     } // end func garbageCollection
-    
-} // end class cache 
+
+} // end class cache
 ?>
Index: php4/pear/Cache/Output.php
diff -u php4/pear/Cache/Output.php:1.14 php4/pear/Cache/Output.php:1.15
--- php4/pear/Cache/Output.php:1.14     Fri Mar 16 00:50:39 2001
+++ php4/pear/Cache/Output.php  Sat Mar 17 08:06:31 2001
@@ -17,21 +17,21 @@
 // |          Vinai Kopp <[EMAIL PROTECTED]>                           |
 // +----------------------------------------------------------------------+
 //
-// $Id: Output.php,v 1.14 2001/03/16 08:50:39 eschmid Exp $
+// $Id: Output.php,v 1.15 2001/03/17 16:06:31 chregu Exp $
 
 require_once 'Cache.php';
 
 /**
 * Class to cache the output of a script using the output buffering functions
 *
-* Simple output cache. Some pages require lots of time to compute. Caching the 
+* Simple output cache. Some pages require lots of time to compute. Caching the
 * output can increase the overall speed dramatically, especially if you use
 * a Shared Memory storage container.
-* 
-* As you can see in the example the usage is extemely simple. To cache a script 
-* simple put some few lines of code in front of your script and some at the end. 
-* A preferrable place for this are the auto_prepend and auto_append files (=> 
php.ini). 
-* 
+*
+* As you can see in the example the usage is extemely simple. To cache a script
+* simple put some few lines of code in front of your script and some at the end.
+* A preferrable place for this are the auto_prepend and auto_append files (=> 
+php.ini).
+*
 * Usage example:
 *
 *  // place this somewhere in a central config file
@@ -43,9 +43,9 @@
 *  $cache = new Cache_Output(CACHE_STORAGE_CLASS, array("cache_dir" => CACHE_DIR));
 *
 *  // compute the unique handle.
-*  // if your script depends on Cookie and HTTP Post data as well 
+*  // if your script depends on Cookie and HTTP Post data as well
 *  // you should use:
-*  // $cache_handle = array( 
+*  // $cache_handle = array(
 *  //                       "file" => $REQUEST_URI,
 *  //                       "post" => $HTTP_POST_VAS"
 *  //                       "cookie"  => $HTTP_COOKIE_VARS
@@ -54,33 +54,33 @@
 *  // can be used for a DOS attack. Calling 
http://www.example.com/example.php?whatever
 *  // where whatever is a random text might be used to flood your cache.
 *  $cache_handle = $cache->generateID($REQUEST_URI);
-* 
-*  // now the magic happens: if cached call die() 
+*
+*  // now the magic happens: if cached call die()
 *  // to end the time consumptiong script script execution and use the cached value!
 *  if ($content = $cache->start($cache_handle)) {
 *     print $content;
 *     print "<p>Cache hit</p>";
 *     die();
 *  }
-*  
-*  // time consumption script goes here. 
-* 
+*
+*  // time consumption script goes here.
+*
 *  // store the output of the cache into the cache and print the output.
 *  print $cache->end();
 *  print "<p>Cache miss, stored using the ID '$id'.</p>";
-* 
+*
 *  If you do not want to cache a whole page - no problem:
-* 
+*
 *  if (!($content = $cache->start($cache_handle))) {
 *     // do the computation here
 *     print $cache->end()
 *  } else {
      print $content;
 *  }
-* 
-*  If you need an example script check the (auto_)prepend and (auto_)append 
+*
+*  If you need an example script check the (auto_)prepend and (auto_)append
 *  files of my homepage:
-* 
+*
 *    http://www.ulf-wendel.de/php/show_source.php?file=prepend
 *    http://www.ulf-wendel.de/php/show_source.php?file=append
 *
@@ -88,7 +88,7 @@
 *  Ask Christian he was patient with me and he'll be so with your questions ;).
 *
 *  Have fun!
-* 
+*
 * @authors  Ulf Wendel <[EMAIL PROTECTED]>
 * @version  $ID: $
 * @package  Cache
@@ -98,7 +98,7 @@
 
     /**
     * ID passed to start()
-    * 
+    *
     * @var  string
     * @see  start(), end()
     */
@@ -106,25 +106,34 @@
 
     /**
     * Group passed to start()
-    * 
-    * @var  string  
+    *
+    * @var  string
     * @see  start(), end()
     */
     var $output_group = "";
 
     /**
+    * PEAR-Deconstructor
+    * Call deconstructor of parent
+    */
+    function _Cache_Output()
+    {
+                $this->_Cache();
+    }
+
+    /**
     * starts the output buffering and returns an empty string or returns the cached 
output from the cache.
-    * 
+    *
     * @param    string  dataset ID
     * @param    string  cache group
-    * @return   string  
+    * @return   string
     * @access   public
     */
     function start($id, $group = "default") {
         if ($this->no_cache)
             return "";
 
-        // this is already cached return it from the cache so that the user 
+        // this is already cached return it from the cache so that the user
         // can use the cache content and stop script execution
         if ($content = $this->get($id, $group))
             return $content;
@@ -166,14 +175,14 @@
     * @brother  end()
     */
     function endPrint($expire = 0, $userdata = "") {
-        print $this->end($expire, $userdata);      
+        print $this->end($expire, $userdata);
     } // end func endPrint
 
     /**
     * Returns the content of the output buffer but does not store it into the cache.
     *
-    * Use this method if the content of your script is markup (XML) 
-    * that has to be parsed/converted (XSLT) before you can output 
+    * Use this method if the content of your script is markup (XML)
+    * that has to be parsed/converted (XSLT) before you can output
     * and store it into the cache using save().
     *
     * @return   string

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to