中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何以文件形式緩存php變量

發布時間:2021-09-02 14:00:20 來源:億速云 閱讀:89 作者:小新 欄目:開發技術

這篇文章主要介紹如何以文件形式緩存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變量”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

绥阳县| 九台市| 集安市| 陆河县| 灵丘县| 田阳县| 水城县| 武宣县| 安溪县| 义马市| 潼关县| 大冶市| 天津市| 丹阳市| 隆昌县| 长治市| 普兰店市| 鄢陵县| 临洮县| 扬中市| 平和县| 兴业县| 凯里市| 临桂县| 自贡市| 莒南县| 南靖县| 秀山| 剑川县| 中宁县| 桂东县| 蕲春县| 晋城| 五指山市| 黄大仙区| 达孜县| 琼海市| 鸡东县| 陇川县| 舟山市| 洛扎县|