Re: cvs: php4(PHP_4_0_5) /pear/Cache Output.php
| From: | Zeev Suraski | Date: | Sat, 24 Mar 2001 02:06:08 +0000 |
| Subject: | Re: cvs: php4(PHP_4_0_5) /pear/Cache Output.php | ||
| References: | 1 | Groups: | php.cvs |
| Request: | Send a blank email to php-cvs+get-4822@lists.php.net to get a copy of this message | ||
FYI - there's a good chance we won't have another RC...
At 20:36 23/3/2001, Christian Stocker wrote:
-- Zeev Suraski <zeev@zend.com> CTO & co-founder, Zend Technologies Ltd. http://www.zend.com/chregu Fri Mar 23 10:36:37 2001 EDTModified files: (Branch: PHP_4_0_5) /php4/pear/Cache Output.phpLog: GarbageCollection was moved into a PEAR-Deconstructor (from the HEAD Branch) Index: php4/pear/Cache/Output.php diff -u php4/pear/Cache/Output.php:1.11 php4/pear/Cache/Output.php:1.11.2.1--- php4/pear/Cache/Output.php:1.11 Sat Mar 10 23:46:58 2001+++ php4/pear/Cache/Output.php Fri Mar 23 10:36:36 2001 @@ -17,64 +17,78 @@// | Vinai Kopp <kopp@netzarbeiter.de> |// +----------------------------------------------------------------------+ // -// $Id: Output.php,v 1.11 2001/03/11 07:46:58 sbergmann Exp $ +// $Id: Output.php,v 1.11.2.1 2001/03/23 18:36:36 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 * define(CACHE_STORAGE_CLASS, "file"); -* // file storage needs a dir to put the cache files -* define(CACHE_DIR, "/var/tmp/"); +* // file storage needs a dir to put the cache files +* define(CACHE_DIR, "/var/tmp/"); * -* // get a cache object +* // get a cache object * $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 * // );-* $cache_handle = $REQUEST_URI; -* -* // now the magic happens: if cached call die() +* // But be warned, using all GET or POST Variables as a seed +* // 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() * // 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(); -* -* 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;-* } +* 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 +* 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* -* Have fun! -* +* Don't know how to use it or you need profiling informations?` +* Ask Christian he was patient with me and he'll be so with your questions ;). +* +* Have fun! +* * @authors Ulf Wendel <ulf.wendel@phpdoc.de> * @version $ID: $ * @package Cache @@ -84,7 +98,7 @@/** * ID passed to start() - * + * * @var string * @see start(), end() */@@ -92,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;@@ -152,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: php-cvs-unsubscribe@lists.php.net For additional commands, e-mail: php-cvs-help@lists.php.net To contact the list administrators, e-mail: php-list-admin@lists.php.net