trifile.php

来自「PhpWiki是sourceforge的一个开源项目」· PHP 代码 · 共 147 行

PHP
147
字号
<?php// +----------------------------------------------------------------------+// | PEAR :: Cache                                                        |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2004 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>                           |// |          Sebastian Bergmann <sb@sebastian-bergmann.de>               |// |          Ian Eure <ieure@php.net>                                    |// +----------------------------------------------------------------------+//// $Id: trifile.php,v 1.1 2004/06/21 08:39:38 rurban Exp $require_once 'Cache/Container/file.php';/** * Tri-file cache. * * This cache container stores files with no special encoding to reduce overhead. * Expiration & user data are stored in seperate files, prefixed with a '.' and * suffixed with '.exp' & '.dat' respectively. * * See http://atomized.org/PEAR/Cache_trifile.html for more information. * * @author Ian Eure <ieure@php.net> * @version 1.0 */class Cache_Container_trifile extends Cache_Container_file {    /**     * Fetch cached file.     *     * @param string $id Cache ID to fetch     * @param string $group Group to fetch from     * @return array 1-dimensional array in the format: expiration,data,userdata     */    function fetch($id, $group)    {        $file = $this->getFilename($id, $group);        if (!file_exists($file))            return array(NULL, NULL, NULL);                return array(                file_get_contents($this->_getExpFile($file)),                file_get_contents($file),                file_get_contents($this->_getUDFile($file))        );    }        /**     * Get the file to store cache data in.     *     * @return string Cache data file name     * @access private     */    function _getFile($file)    {        $dir = dirname($file);        $file = basename($file);        return $dir.'/.'.$file;    }        /**     * Get the file to store expiration data in.     *     * @return string Expiration data file name     * @access private     */    function _getExpFile($file)    {        return $this->_getFile($file).'.exp';    }        /**     * Get the file to store user data in.     *     * @return string User data file name     * @access private     */    function _getUDFile($file)    {        return $this->_getFile($file).'.dat';    }        /**     * Cache file     *     * @param string $id Cache ID     * @param mixed $cachedata Data to cache     * @param mixed $expires When the data expires     * @param string $group Cache group to store data in     * @param mixed $userdata Additional data to store     * @return boolean true on success, false otherwise     */    function save($id, $cachedata, $expires, $group, $userdata)    {        $this->flushPreload($id, $group);        $file = $this->getFilename($id, $group);        if (PEAR::isError($res = $this->_saveData($file, $cachedata))) {            return $res;        }        if (PEAR::isError($res = $this->_saveData($this->_getExpFile($file), $expires))) {            return $res;        }        if(PEAR::isError($res = $this->_saveData($this->_getUDFile($file), $userData))) {            return $res;        }        return true;    }    /**     * Save data in a file     *     * @param string $file File to save data in     * @param string $data Data to save     * @return mixed true on success, Cache_Error otherwise     */    function _saveData($file, $data) {        // Save data        if (!($fh = @fopen($file, 'wb')))            return new Cache_Error("Can't access '$file' to store cache data. Check access rights and path.", __FILE__, __LINE__);                if ($this->fileLocking) {            flock($fh, LOCK_EX);        }                fwrite($fh, $data);                if($this->fileLocking) {            flock($fh, LOCK_UN);        }                fclose($fh);        return true;    }}?>

⌨️ 快捷键说明

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