- ·上一篇文章:生成静态页面的PHP类
- ·下一篇文章:FlashRemoting:Flex AMF 的应用
php的缓存类
<?php
class cache {
var $_file;
var $cache_time;
function cache($_file='_index.htm',$cache_time=1) {
$this->_file = $_file;
$this->cache_time = $cache_time;
}
/*
* Start cache method without Return
*/
function start() {
if($this->cache_is_active()) {
include($this->_file);
exit;
}
ob_start();
}
/*
* End of cache method without Return
*/
function _end() {
$this->make_cache();
ob_end_flush();
}
/*
* Check if cache file is actived
* Return true/false
*/
function cache_is_active() {
if ($this->cache_is_exist()) {
if (time() - $this->lastModified() < $this->cache_time)
Return true;
else {
Return false;
}
}
else {
Return false;
}
}
/*
* Create cache file
* Return true/false
*/
function make_cache() {
$content = $this->get_cache_content();
if($this->write_file($content)) {
Return true;
}
else {
Return false;
}
}
/*
* Check if cache file is exists
* Return true/false
*/
function cache_is_exist() {
if(file_exists($this->_file)) {
Return true;
}
else {
Return false;
}
}
/*
* Return last Modified time in bollin formart
* Usage: $lastmodified = $this->lastModified();
*/
function lastModified() {
Return @filemtime($this->_file);
}
/*
* Return Content of Page
* Usage: $content = $this->get_cache_content();
*/
function get_cache_content() {
$contents = ob_get_contents();
// Return '<!--'.date('Y-m-d H:i:s').'-->'.$contents;
Return $contents;
}
/*Write content to $this->_file
* Return true/false
* Usage: $this->write_file($content);
**/
function write_file($content,$mode='w+')
{
$this->mk_dir($this->_file);
if (!$fp = @fopen($this->_file,$mode)) {
$this->report_Error($this->_file." 目录或者文件属性无法写入.");
Return false;
} else{
@fwrite($fp,$content);
@fclose($fp);
@umask($oldmask);
Return true;
}
}
/*
* Make given dir included in $this->_file
* Without Return
* Usage: $this->mk_dir();
*/
function mk_dir()
{ //$this->_file = str_replace('','/');
$dir = @explode("/", $this->_file);
$num = @count($dir)-1;
$tmp = './';
for($i=0; $i<$num; $i++){
$tmp .= $dir[$i];
if(!file_exists($tmp)){
@mkdir($tmp);
@chmod($tmp, 0777);
}
$tmp .= '/';
}
}
/*
* Unlink an exists cache
* Return true/false
* Usage: $this->clear_cache();
*/
function clear_cache() {
if (!@unlink($this->_file)) {
$this->report_Error('Unable to remove cache');
Return false;
}
else {
Return true;
}
}
/*
* Report Error Messages
* Usage: $this->report_Error($message);
*/
function report_Error($message=NULL) {
if($message!=NULL) {
trigger_error($message);
}
}
}
?>
class cache {
var $_file;
var $cache_time;
function cache($_file='_index.htm',$cache_time=1) {
$this->_file = $_file;
$this->cache_time = $cache_time;
}
/*
* Start cache method without Return
*/
function start() {
if($this->cache_is_active()) {
include($this->_file);
exit;
}
ob_start();
}
/*
* End of cache method without Return
*/
function _end() {
$this->make_cache();
ob_end_flush();
}
/*
* Check if cache file is actived
* Return true/false
*/
function cache_is_active() {
if ($this->cache_is_exist()) {
if (time() - $this->lastModified() < $this->cache_time)
Return true;
else {
Return false;
}
}
else {
Return false;
}
}
/*
* Create cache file
* Return true/false
*/
function make_cache() {
$content = $this->get_cache_content();
if($this->write_file($content)) {
Return true;
}
else {
Return false;
}
}
/*
* Check if cache file is exists
* Return true/false
*/
function cache_is_exist() {
if(file_exists($this->_file)) {
Return true;
}
else {
Return false;
}
}
/*
* Return last Modified time in bollin formart
* Usage: $lastmodified = $this->lastModified();
*/
function lastModified() {
Return @filemtime($this->_file);
}
/*
* Return Content of Page
* Usage: $content = $this->get_cache_content();
*/
function get_cache_content() {
$contents = ob_get_contents();
// Return '<!--'.date('Y-m-d H:i:s').'-->'.$contents;
Return $contents;
}
/*Write content to $this->_file
* Return true/false
* Usage: $this->write_file($content);
**/
function write_file($content,$mode='w+')
{
$this->mk_dir($this->_file);
if (!$fp = @fopen($this->_file,$mode)) {
$this->report_Error($this->_file." 目录或者文件属性无法写入.");
Return false;
} else{
@fwrite($fp,$content);
@fclose($fp);
@umask($oldmask);
Return true;
}
}
/*
* Make given dir included in $this->_file
* Without Return
* Usage: $this->mk_dir();
*/
function mk_dir()
{ //$this->_file = str_replace('','/');
$dir = @explode("/", $this->_file);
$num = @count($dir)-1;
$tmp = './';
for($i=0; $i<$num; $i++){
$tmp .= $dir[$i];
if(!file_exists($tmp)){
@mkdir($tmp);
@chmod($tmp, 0777);
}
$tmp .= '/';
}
}
/*
* Unlink an exists cache
* Return true/false
* Usage: $this->clear_cache();
*/
function clear_cache() {
if (!@unlink($this->_file)) {
$this->report_Error('Unable to remove cache');
Return false;
}
else {
Return true;
}
}
/*
* Report Error Messages
* Usage: $this->report_Error($message);
*/
function report_Error($message=NULL) {
if($message!=NULL) {
trigger_error($message);
}
}
}
?>

