国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

以文件形式緩存php變量的方法

2024-04-25 20:37:44
字體:
來源:轉載
供稿:網友

本文實例講述了以文件形式緩存php變量的方法。分享給大家供大家參考。具體實現方法如下:

<?php

/*

$cache_set = array(

//緩存路徑 , 最后要加"/"

'cacheRoot'=>'./cache/',

//緩存時間

'cacheTime'=>20,

//cache type

'cacheType'=>1,

//擴展名

'cacheExe'=>'.php'

);

$cache = new Cache($cache_set);

$a=array('1','2');

$a="aaa";

$b='';

if($cache->cache_is("d")){

$c=$cache->cache_read("d");

echo "c";

print_r($c);

}else {

$b=$cache->cache_data('d',$a);

}

print_r($b);

//$cache->clear("a");

//echo $cache->cache_read("./cache/d.php");

//echo $d;

*/

/**

* 數據緩存類 v1.0

* @author shooke

* 2009-11-13 16:02:26

* 用于緩存數據,如變量,但不能緩存頁面

*/

class Cache{

//配置

public $config = array(

//緩存路徑

'cacheRoot'=>'./cache/',

//緩存時間

'cacheTime'=>1,

//cache 類型 1串化數據 2變量

'cacheType'=>2,

//擴展名

'cacheExe'=>'.php'

//轉換中間變量

);

public $return_name=array();

function __construct($cache_set = array())

{

if(!empty($cache_set)) $this->config=array_merge($this->config,$cache_set);

$this->config['ClassName'] = __CLASS__;

}

public function clear($filename=''){

if (file_exists($this->cache_file($filename))) {

@unlink($this->cache_file($filename));

}elseif (empty($filename)){

$this->clear_dir($this->config['cacheRoot']);

}else{

$this->clear_dir($this->config['cacheRoot'].$filename);

echo $this->config['cacheRoot'].$filename;

}

}

//循環刪除路徑

private function clear_dir($dir,$to = false)

{

if ($list = glob($dir.'/*'))

{

foreach ($list as $file)

{

is_dir($file) ? $this->clear_dir($file) : unlink($file);

}

}

if ($to === false) rmdir($dir);

}

//寫入緩存

private function cache_write($filename, $writetext, $openmod='w'){

if (!file_exists($filename)) {

@$this->makeDir( dirname($filename ));

}

if(@$fp = fopen($filename, $openmod)) {

flock($fp, 2);

fwrite($fp, $writetext);

fclose($fp);

return true;

} else {

echo "File: $filename write error.";

return false;

}

}

//緩存有效期 有效返回 true

public function cache_is($fileName){

$fileName=$this->cache_file($fileName);

if( file_exists( $fileName ) ) {

//如果緩存時間為負數則永不過期

if ($this->config['cacheTime'] < 0) {

return true;

}

//如果緩存時間為0則一直過期

if ($this->config['cacheTime'] == 0) {

return false;

}

//獲取緩存文件的建立時間

$ctime = intval(filemtime( $fileName ));

//比較是否大于緩存時間,是則過期 否則不過期

if (time() - $ctime > $this->config['cacheTime']) {

return false;

}else {

return true;

}

//文件不存在視為過期失效

}else {

return false;

}

}

public function cache_data($name,$data){

$varname=$name;

$name = $this->cache_file($name);

//config['cacheTime']==0也就是不啟用緩存是直接返回數據

if ($this->config['cacheTime'] <> 0) {

if($this->config['cacheType']==1){

$write_data = "<?php exit;?>".serialize($data);

//return $data;

}else {

$write_data = "<?php//r//n//$var= ";

$write_data .= var_export($data,true);

$write_data .=";//r//n?>";

}

$this->cache_write($name,$write_data);

}

return $data;

}

//緩存文件名

private function cache_file($filename){

return $this->config['cacheRoot'].$filename.$this->config['cacheExe'];

}

//讀取文件

public function cache_read($file){

$file=$this->cache_file($file);

if (!file_exists($file)) {

return '';

}

if($this->config['cacheType']==1){

if (function_exists('file_get_contents')){

$cache_Content= file_get_contents($file);

}else{

$fopen = fopen($file,'r');

$cache_Content = '';

do {

$data = fread($fopen,filesize($file));

if (strlen($data)===0) break;

$cache_Content .= $data;

}while(1);

fclose($fopen);

}

$cache_Content = substr($cache_Content,13);/* 去除<?php exit;?> */

$cache_Content = unserialize($cache_Content);

return $cache_Content;

}else{

include_once($file);

return $var;

}

}

//循環創建目錄

private function makeDir( $dir, $mode = 0777 ) {

if( ! $dir ) return 0;

$dir = str_replace( "////", "/", $dir );

$mdir = "";

foreach( explode( "/", $dir ) as $val ) {

$mdir .= $val."/";

if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;

if( ! file_exists( $mdir ) ) {

if(!@mkdir( $mdir, $mode )){

return false;

}

}

}

return true;

}

}

?>
希望本文所述對大家的php程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南雄市| 靖州| 永清县| 宝兴县| 乐安县| 全南县| 四子王旗| 搜索| 澄迈县| 新邵县| 淅川县| 贵德县| 东阿县| 牟定县| 同德县| 邵东县| 平南县| 景泰县| 集安市| 无极县| 得荣县| 沛县| 金华市| 区。| 定襄县| 富川| 瑞丽市| 万年县| 阜阳市| 休宁县| 新泰市| 宣恩县| 逊克县| 镇宁| 闽侯县| 九龙坡区| 准格尔旗| 西华县| 灵璧县| 交口县| 大英县|