最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年06月26日 11:04:31   作者:沉淀歲月  
這篇文章主要介紹了以文件形式緩存php變量的方法,涉及php緩存類的定義與使用技巧,需要的朋友可以參考下

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

<?php
/*
$cache_set = array(
//緩存路徑 , 最后要加"/"
'cacheRoot'=>'./cache/',
//緩存時(shí)間
'cacheTime'=>20,
//cache type
'cacheType'=>1,
//擴(kuò)展名
'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;
*/
/**
 * 數(shù)據(jù)緩存類 v1.0
 * @author shooke
 * 2009-11-13 16:02:26
 * 用于緩存數(shù)據(jù),如變量,但不能緩存頁面
 */
class Cache{
 //配置
 public $config = array(
 //緩存路徑
 'cacheRoot'=>'./cache/',
 //緩存時(shí)間
 'cacheTime'=>1,
 //cache 類型 1串化數(shù)據(jù) 2變量
 'cacheType'=>2,
 //擴(kuò)展名
 'cacheExe'=>'.php'
 //轉(zhuǎn)換中間變量
 );
 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;
  }
 }
 //循環(huán)刪除路徑
 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 ) ) {
   //如果緩存時(shí)間為負(fù)數(shù)則永不過期
   if ($this->config['cacheTime'] < 0) {
    return true;
   }
   //如果緩存時(shí)間為0則一直過期
   if ($this->config['cacheTime'] == 0) {
    return false;
   }
   //獲取緩存文件的建立時(shí)間
   $ctime = intval(filemtime( $fileName ));
   //比較是否大于緩存時(shí)間,是則過期 否則不過期
   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也就是不啟用緩存是直接返回?cái)?shù)據(jù)
  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;
  }
 }
 //循環(huán)創(chuàng)建目錄
 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;
 }
}
?>

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解PHP原生DOM對(duì)象操作XML的方法

    詳解PHP原生DOM對(duì)象操作XML的方法

    大家都知道對(duì)于操作XML類型文件,PHP內(nèi)置有一套DOM對(duì)象可以進(jìn)行處理。對(duì)XML的操作,從創(chuàng)建、添加到修改、刪除都可以使用DOM對(duì)象中的函數(shù)來進(jìn)行。下面這篇文章通過示例代碼給大家介紹如何進(jìn)行操作,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • php生成圖片縮略圖的方法

    php生成圖片縮略圖的方法

    這篇文章主要介紹了php生成圖片縮略圖的方法,涉及php操作圖片的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • php從完整文件路徑中分離文件目錄和文件名的方法

    php從完整文件路徑中分離文件目錄和文件名的方法

    這篇文章主要介紹了php從完整文件路徑中分離文件目錄和文件名的方法,涉及php中basename及dirname函數(shù)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • PHP實(shí)現(xiàn)XML與數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換類實(shí)例

    PHP實(shí)現(xiàn)XML與數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換類實(shí)例

    這篇文章主要介紹了PHP實(shí)現(xiàn)XML與數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換類,實(shí)例分析了php進(jìn)行XML格式數(shù)據(jù)的方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • phpMyAdmin2.11.6安裝配置方法

    phpMyAdmin2.11.6安裝配置方法

    今天調(diào)試PHP數(shù)據(jù)庫Mysql,在單位的電腦上安裝phpMyAdmin數(shù)據(jù)庫管理軟件,本來是很簡單的事,卻出現(xiàn)了幾個(gè)問題:1/無法載入mcrypt擴(kuò)展,請(qǐng)檢查PHP配置;/配置文件現(xiàn)在需要絕密的短語密碼(blowfish_secret);3/#2003-服務(wù)器沒有響應(yīng)。
    2008-08-08
  • PHP+JQuery+Ajax實(shí)現(xiàn)分頁方法詳解

    PHP+JQuery+Ajax實(shí)現(xiàn)分頁方法詳解

    這篇文章主要介紹了PHP+JQuery+Ajax實(shí)現(xiàn)分頁的方法,結(jié)合實(shí)例形式詳細(xì)分析了php數(shù)據(jù)查詢、分頁設(shè)置及ajax交互的相關(guān)技巧,并總結(jié)了分頁的相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-08-08
  • 解決安裝WampServer時(shí)提示缺少msvcr110.dll文件的問題

    解決安裝WampServer時(shí)提示缺少msvcr110.dll文件的問題

    下面小編就為大家?guī)硪黄鉀Q安裝WampServer時(shí)提示缺少msvcr110.dll文件的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 使用session判斷用戶登錄用戶權(quán)限(超簡單)

    使用session判斷用戶登錄用戶權(quán)限(超簡單)

    本篇文章是對(duì)session判斷用戶登錄用戶權(quán)限進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 使用adodb lite解決問題

    使用adodb lite解決問題

    使用adodb lite解決問題...
    2006-12-12
  • Laravel SQL語句記錄方式(推薦)

    Laravel SQL語句記錄方式(推薦)

    下面小編就為大家?guī)硪黄狶aravel SQL語句記錄方式(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05

最新評(píng)論

巨鹿县| 年辖:市辖区| 本溪| 磐安县| 杭锦旗| 泸定县| 靖远县| 裕民县| 远安县| 新昌县| 高要市| 虹口区| 休宁县| 永顺县| 彭阳县| 靖西县| 西畴县| 永靖县| 营山县| 仪陇县| 佳木斯市| 登封市| 米泉市| 沁水县| 南澳县| 府谷县| 景德镇市| 犍为县| 德昌县| 三门峡市| 灌阳县| 来凤县| 南雄市| 江西省| 松潘县| 玉龙| 闽侯县| 新沂市| 大城县| 南通市| 正定县|