output.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 216 行
PHP
216 行
<?php// +----------------------------------------------------------------------+// | PEAR :: Cache |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group |// +----------------------------------------------------------------------+// | This source file is subject to version 2.0 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/2_02.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +----------------------------------------------------------------------+// | Authors: Ulf Wendel <ulf.wendel@phpdoc.de> |// | Christian Stocker <chregu@phant.ch> |// | Vinai Kopp <kopp@netzarbeiter.de> |// +----------------------------------------------------------------------+//// $Id: Output.php,v 1.6 2003/01/04 11:54:45 mj 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* 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).** 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/');** // 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* // you should use:* // $cache_handle = array(* // 'file' => $REQUEST_URI,* // 'post' => $HTTP_POST_VARS,* // 'cookie' => $HTTP_COOKIE_VARS* // );* // 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.** // 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* 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** 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* @access public*/class Cache_Output extends Cache { /** * ID passed to start() * * @var string * @see start(), end() */ var $output_id = ''; /** * Group passed to start() * * @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 * @access public */ function start($id, $group = 'default') { if (!$this->caching) return ''; // 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; // remember some data to be able to fill the cache on calling end() $this->output_id = $id; $this->output_group = $group; // WARNING: we need the output buffer - possible clashes ob_start(); ob_implicit_flush(false); return ''; } // end func start /* * Stores the content of the output buffer into the cache and returns the content. * * @param mixed lifetime of the cached data in seconds - 0 for endless. More formats available. see Container::getExpiresAbsolute() * @param string additional userdefined data * @return string cached output * @access public * @see endPrint(), endGet(), Container::getExpiresAbsolute() */ function end($expire = 0, $userdata = '') { $content = ob_get_contents(); ob_end_clean(); // store in the cache if ($this->caching) $this->container->save($this->output_id, $content, $expire, $this->output_group, $userdata); return $content; } // end func end() /** * Stores the content of the output buffer into the cache and prints the content. * * @brother end() */ function endPrint($expire = 0, $userdata = '') { $this->printContent($this->end($expire, $userdata)); } // end func endPrint /** * Sends the data to the user. * This is for compatibility with OutputCompression * * @param string * @access public */ function printContent($content = '') { if ('' == $content) $content = &$this->container->cachedata; print $content; } /** * 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 * and store it into the cache using save(). * * @return string * @access public * @see endPrint(), end() */ function endGet() { $content = ob_get_contents(); ob_end_clean(); $this->output_id = ''; $this->output_group = ''; return $content; } // end func endGet} // end class output?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?