zoukankan      html  css  js  c++  java
  • php cache 缓存方法类二

     php cache 缓存方法类二

    <?php
    /**
     * Cache class
     *
     * @author   Avenger <avenger@php.net>
     * @version  1.0
     * @update   2003-04-29 12:12:37
     */

    class cache {

        /**
         * url wanta cached
         *
         * @var string
         */
        var $cached_file;

        /**
         * path to the cache save
         *
         * @var string
         */
        var $cached_path;

        /**
         * cached limit time
         *
         * @var string
         */
        var $cached_time;

        /**
         * expire time
         *
         * @var string
         */
        var $cached_modtime;

        /**
         * Construct function
         *
         * @access public
         * @param string $path Cached path
         * @param int $time Cached time
         * @return void
         */
        function cache($path='cache/',$time=120) {
            global $HTTP_SERVER_VARS;
            $query_str = preg_replace('/(&submit/.[x|y]=[0-9]+)+$/','',$HTTP_SERVER_VARS['REQUEST_URI']);
            $this->cached_file = md5($query_str).'.cache';
            $this->cached_path = $path;
            $this->cached_time = $time * 3600;
            if (is_dir($this->cached_path)===false) {
                mkdir($this->cached_path,0777);
            }
            if (file_exists($this->cached_path.$this->cached_file)) {
                $this->cached_modtime = date(time()-filemtime($this->cached_path.$this->cached_file));
            }
        }

        /**
         * Start the cache
         *
         * @access public
         */
        function start() {
            global $HTTP_GET_VARS;
            if ( ($HTTP_GET_VARS['update']!="") || (!file_exists($this->cached_path.$this->cached_file)) || ($this->chched_modtime > $this->cached_time) ) {
                ob_start();
            } else {
                readfile($this->cached_path.$this->cached_file);
                exit();
            }
        }

        /**
         * End the cache
         *
         * @access public
         */
        function end() {
            global $HTTP_GET_VARS;
            if ( ($HTTP_GET_VARS['update']!="") || (!file_exists($this->cached_path.$this->cached_file)) || ($this->chched_modtime > $this->cached_time) ) {
                $contents = ob_get_contents();
                ob_end_clean();
                $HTTP_GET_VARS['update']!="" ? chmod($this->cached_path.$this->cached_file,0777) : '';
                $fp = fopen($this->cached_path.$this->cached_file,'w');
                fputs($fp,$contents);
                fclose($fp);
                echo $contents;
            }
        }

        /**
         * Flush all cache
         *
         * @access public
         */
        function flush() {
            if (function_exists('exec')) {
                if (strpos(strtoupper(PHP_OS),'WIN') !== false) {
                    $cmd = 'del /s '.str_replace('/','//',$this->cached_path).'*.cache';
                } else {
                    $cmd = 'rm -rf '.$ADODB_CACHE_DIR.'/*.cache';
                }
                exec($cmd);
            } else {
                $d = dir($this->cached_path);
                while ($entry = $d->read()) {
                    $modtime = date(time()-filemtime($this->cached_path.$entry));
                    // if (($entry != ".") && ($entry != "..") && ($modtime > $this->cached_time)) {
                    if (($entry != ".") && ($entry != "..")) {
                        chmod($this->cached_path.$entry,0777);
                        unlink($this->cached_path.$entry);
                    }
                }
                $d->close();
            }
            return;
        }

    } //End Class
    ?>

    1. <?php   
    2. /*  
    3. run this scrpt,at the currerent dir,u will see a new folder names' "cache1"  
    4. in the "cache1" folder will have a file.the file's contents will be:  
    5.  
    6. This is a Cache test line 1 ...  
    7. This is a Cache test line 2 ...  
    8. This is a Cache test line 3 ...  
    9.  
    10. And if u wanta del all cache file,u will use:  
    11. $c->flush();  
    12.  
    13. It's very easily to use,isn't it? :)  
    14. If u find a bug plz report to me: avenger@php.net  
    15. Read and learn!!  :)  
    16. */  
    17.  
    18. require_once   'cache.inc.php' ;  
    19.  
    20. // Create Object  
    21. $c  =  new  cache( 'cache1/' ,120);  // The cache path and cache time  
    22.  
    23. // Start,All the word between the start functon and the end function will be cached  
    24. $c ->start();  
    25.  
    26. echo   "This is a Cache test line 1 .../n" ;  
    27. echo   "This is a Cache test line 2 .../n" ;  
    28. echo   "This is a Cache test line 3 .../n" ;  
    29.  
    30. // End and output  
    31. $c -> end ();  
    32.  
    33. ?>
  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/fengju/p/6173833.html
Copyright © 2011-2022 走看看