⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tpl_cache.inc.php

📁 MyDNSConfig-1.1.0 基于LINUX内核系统的DNS解析系统
💻 PHP
字号:
<?php/* vim: set expandtab tabstop=4 shiftwidth=4: */// +----------------------------------------------------------------------+// | PHP version 4.0                                                      |// +----------------------------------------------------------------------+// | Copyright (c) 2002 Active Fish Group                                 |// +----------------------------------------------------------------------+// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk>                     |// +----------------------------------------------------------------------+//// $Id: cache.php,v 1.1 2003/07/08 12:32:06 platinum Exp $/** * Class uses all of vlibTemplate's functionality but caches the template files. * It creates an identical tree structure to your filesystem but with cached files. * * @author Kelvin Jones <kelvin@kelvinjones.co.uk> * @since 22/02/2002 * @package vLIB * @access public */class tplc extends tpl {/*-----------------------------------------------------------------------------\|     DO NOT TOUCH ANYTHING IN THIS CLASS, IT MAY NOT WORK OTHERWISE           |\-----------------------------------------------------------------------------*/    var $_cache = 1;     // tells vlibTemplate that we're caching    var $_cachefile;     // full path to current cache file (even if it doesn't yet exist)    var $_cacheexists;   // has this file been cached before    var $_cachefilelocked; // is this file currently locked whilst writing    var $_cachefiledir;  // dir of current cache file    var $_clearcache = 0;    /**     * FUNCTION: clearCache     * will unset a file, and set $this->_cacheexists to 0.     *     * @access public     * @return boolean     */    function clearCache() {        $this->_clearcache = 1;        return true;    }    /**     * FUNCTION: recache     * alias for clearCache().     *     * @access public     * @return boolean     */    function recache() {        return $this->clearCache();    }    /**     * FUNCTION: setCacheLifeTime     * sets the lifetime of the cached file     *     * @param int $int number of seconds to set lifetime to     * @access public     * @return boolean     */    function setCacheLifeTime($int = null) {        if ($int == null || !is_int($int)) return false;        if ($int == 0) $int = 60;        if ($int == -1) $int = 157680000; // set to 5 yrs time        $this->OPTIONS['CACHE_LIFETIME'] = $int;        return true;    }    /**     * FUNCTION: setCacheExtension     * sets the extention of the cache file     *     * @param str $str name of new cache extention     * @access public     * @return boolean     */    function setCacheExtension($str = null) {        if ($str == null || !ereg('^[a-z0-9]+$', strtolower($str))) return false;        $this->OPTIONS['CACHE_EXTENSION'] = strtolower($str);        return true;    }/*----------------------------------------\          Private Functions-----------------------------------------*/    /**     * FUNCTION: _checkCache     * checks if there's a cache, if there is then it will read the cache file as the template.     */    function _checkCache ($tmplfile) {        $this->_cachefile = $this->_getFilename($tmplfile);        if ($this->_clearcache) {            if (file_exists($this->_cachefile)) unlink($this->_cachefile);            return false;        }        if (file_exists($this->_cachefile)) {            $this->_cacheexists = 1;            // if it's expired            if ((filemtime($this->_cachefile) + $this->OPTIONS['CACHE_LIFETIME']) < date ('U')                  || filectime($this->_cachefile) < filemtime($tmplfile)) {                $this->_cacheexists = 0;                return false; // so that we know to recache            }            else {                return true;            }        } else {            $this->_cacheexists = 0;            return false;        }    }    /**     * FUNCTION: _getFilename     * gets the full pathname for the cached file     *     */    function _getFilename($tmplfile) {        return $this->OPTIONS['CACHE_DIRECTORY'].'/'.md5('vlibCachestaR'.realpath($tmplfile)).'.'.$this->OPTIONS['CACHE_EXTENSION'];    }    /**     * FUNCTION: _createCache     * creates the cached file     *     */    function _createCache($data) {        $cache_file = $this->_cachefile;        if(!$this->_prepareDirs($cache_file)) return false; // prepare all of the directories        $f = fopen ($cache_file, "w");        flock($f, 2); // set an EXclusive lock        if (!$f) vlibTemplateError::raiseError('VT_ERROR_NO_CACHE_WRITE',KILL,$cache_file);        fputs ($f, $data); // write the parsed string from vlibTemplate        flock($f, 3); // UNlock file        fclose ($f);        touch ($cache_file);        return true;    }    /**     * FUNCTION: _prepareDirs     * prepares the directory structure     *     */    function _prepareDirs($file) {        if (empty($file)) die('no filename'); //do error in future        $filepath = dirname($file);        if (is_dir($filepath)) return true;        $dirs = split('[\\/]', $filepath);        $currpath;        foreach ($dirs as $dir) {            $currpath .= $dir .'/';            $type = @filetype($currpath);            ($type=='link') and $type = 'dir';            if ($type != 'dir' && $type != false && !empty($type)) {                vlibTemplateError::raiseError('VT_ERROR_WRONG_CACHE_TYPE',KILL,'directory: '.$currpath.', type: '.$type);            }            if ($type == 'dir') {                continue;            }            else {                $s = @mkdir($currpath, 0775);                if (!$s) vlibTemplateError::raiseError('VT_ERROR_CACHE_MKDIR_FAILURE',KILL,'directory: '.$currpath);            }        }        return true;    }} // -- end vlibTemplateCache class?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -