Heim  >  Artikel  >  Backend-Entwicklung  >  PHP缓存之文件缓存_PHP教程

PHP缓存之文件缓存_PHP教程

WBOY
WBOYOriginal
2016-07-13 10:19:47954Durchsuche

PHP缓存之文件缓存

1、PHP文件缓存内容保存格式
PHP文件缓存内容保存格式主要有三种:
(1)变量 var_export 格式化成PHP正常的赋值书写格式;
(2)变量 serialize 序列化之后保存,用的时候反序列化;
(3)变量 json_encode格式化之后保存,用的时候json_decode
互联网上测试结果是:serialize格式的文件解析效率大于Json,Json的解析效率大于PHP正常赋值。
所以我们要是缓存数据建议采用序列化的形式解析数据会更快。

2、PHP文件缓存的简单案例

<?php
class Cache_Driver{
	//定义缓存的路径
	protected $_cache_path;

//根据$config中的cache_path值获取路径信息
	public function Cache_Driver($config)
	{
		if(is_array($config) && isset($config[&#39;cache_path&#39;]))
		{
		   $this->_cache_path = $config[&#39;cache_path&#39;];
		}
		else
		{
		   $this->_cache_path = realpath(dirname(__FILE__)."/")."/cache/";
		}
	}
//判断key值对应的文件是否存在,如果存在,读取value值,value以序列化存储
	public function get($id)
	{
		if ( ! file_exists($this->_cache_path.$id))
		{
			return FALSE;
		}
		
		$data = @file_get_contents($this->_cache_path.$id);
		$data = unserialize($data);
		
		if(!is_array($data) || !isset($data[&#39;time&#39;]) || !isset($data[&#39;ttl&#39;]))
		{
			return FALSE;
		}
		
		if ($data[&#39;ttl&#39;] > 0 && time() >  $data[&#39;time&#39;] + $data[&#39;ttl&#39;])
		{
			@unlink($this->_cache_path.$id);
			return FALSE;
		}
		
		return $data[&#39;data&#39;];
	}
//设置缓存信息,根据key值,生成相应的缓存文件
	public function set($id, $data, $ttl = 60)
	{		
		$contents = array(
				&#39;time&#39;		=> time(),
				&#39;ttl&#39;		=> $ttl,			
				&#39;data&#39;		=> $data
			);
		
		if (@file_put_contents($this->_cache_path.$id, serialize($contents)))
		{
			@chmod($this->_cache_path.$id, 0777);
			return TRUE;			
		}

		return FALSE;
	}
//根据key值,删除缓存文件
	public function delete($id)
	{
		return @unlink($this->_cache_path.$id);
	}

	public function clean()
	{
      $dh = @opendir($this->_cache_path);
	   if(!$dh)
         return FALSE;
      
      while ($file = @readdir($dh))
      {
         if($file == "." || $file == "..")
            continue;
         
         $path = $this->_cache_path."/".$file;
         if(is_file($path))
            @unlink($path);
      }
      @closedir($dh);
      
		return TRUE;
	}
}


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/871195.htmlTechArticlePHP缓存之文件缓存 1、PHP文件缓存内容保存式 PHP文件缓存内容保存式主要有三种: (1)变量 var_export 式化成PHP正常的赋书写式; (2)变量...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn