php 部分缓存数据库返回数据的例子
发布:smiling 来源: PHP粉丝网 添加日期:2016-01-20 16:18:29 浏览: 评论:0
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;
- }
- }
- }
Tags: php缓存数据库 php返回数据
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)