加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 部分缓存数据库返回数据例子的介绍

发布时间:2023-09-15 11:00:26 所属栏目:PHP教程 来源:
导读:php粉丝教程小编为各位介绍一篇php 部分缓存数据库返回数据的例子,这个例子其实是非常的实用了,希望能够帮助到大家.

$cache = new FileCache();
$new_arr = $cache->get('gsmcache');//yourkey是你为每
php粉丝教程小编为各位介绍一篇php 部分缓存数据库返回数据的例子,这个例子其实是非常的实用了,希望能够帮助到大家.

$cache = new FileCache(); 
$new_arr = $cache->get('gsmcache');//yourkey是你为每一个要缓存的数据定义的缓存名字 
if ($new_arr===false) { 
 
$new_arr="数据库返回的数据"; 
 
$cache->set('gsmcache',$new_arr,3600);//缓存3600秒 
 

 
<?php 
/** 
* 文件缓存类 

* @copyright blog.itiwin.cn 
* @author  More 
* @package cache 
* @version v0.1 
*/ 
class FileCache { 
/** 
* @var string $cachePath 缓存文件目录 
* @access public 
*/ 
public $cachePath = './'; 
 
/** 
* 构造函数 
* @param string $path 缓存文件目录 
*/ 
function __construct($path = NULL) { 
if ($path) { 
$this->cachePath = $path; 


 
/** 
* 析构函数 
*/ 
function __destruct() { 
//nothing 

 
/** 
* 在cache中设置键为$key的项的值,如果该项不存在,则新建一个项 
* @param string $key 键值 
* @param mix $var 值 
* @param int $expire 到期秒数 
* @param int $flag 标志位 
* @return bool 如果成功则返回 TRUE,失败则返回 FALSE。 
* @access public 
*/ 
public function set($key, $var, $expire = 36000, $flag = 0) { 
$value = serialize($var); 
$timeout = time() + $expire; 
$result = safe_file_put_contents($this->cachePath . urlencode($key) .'.cache', 
$timeout . '<<%-==-%>>' . $value); 
return $result; 

 
/** 
* 在cache中获取键为$key的项的值 
* @param string $key 键值 
* @return string 如果该项不存在,则返回false 
* @access public 
*/ 
public function get($key) { 
$file = $this->cachePath . urlencode($key) .'.cache'; 
if (file_exists($file)) { 
$content = safe_file_get_contents($file); 
if ($content===false) { 
return false; 

$tmp = explode('<<%-==-%>>', $content); 
$timeout = $tmp[0]; 
$value = $tmp[1]; 
if (time()>$timeout) { 
 
$this->delete($key) ;//删除文件过期的 
$result = false; 
} else { 
$result = unserialize($value); 

} else { 
$result = false; 

return $result; 

 
/** 
* 清空cache中所有项 
* @return 如果成功则返回 TRUE,失败则返回 FALSE。 
* @access public 
*/ 
public function flush() { 
$fileList = FileSystem::ls($this->cachePath,array(),'asc',true); 
return FileSystem::rm($fileList); 

 
/** 
* 删除在cache中键为$key的项的值 
* @param string $key 键值 
* @return 如果成功则返回 TRUE,失败则返回 FALSE。 
* @access public 
*/ 
public function delete($key) { 
return FileSystem::rm($this->cachePath . $key .'.cache'); 


 
if (!function_exists('safe_file_put_contents')) { 
function safe_file_put_contents($filename, $content) 

$fp = fopen($filename, 'wb'); 
if ($fp) { 
flock($fp, LOCK_EX); 
fwrite($fp, $content); 
flock($fp, LOCK_UN); 
fclose($fp); 
return true; 
} else { 
return false; 



 
if (!function_exists('safe_file_get_contents')) { 
function safe_file_get_contents($filename) 

$fp = fopen($filename, 'rb'); 
if ($fp) { 
flock($fp, LOCK_SH); 
clearstatcache(); 
$filesize = filesize($filename); 
if ($filesize > 0) { 
$data = fread($fp, $filesize); 

flock($fp, LOCK_UN); 
fclose($fp); 
return $data; 
} else { 
return false; 


(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章