当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2016-01-20 16:18:29 浏览: 评论:0 

php粉丝教程小编为各位介绍一篇php 部分缓存数据库返回数据的例子,这个例子其实是非常的实用了,希望能够帮助到大家.

  1. $cache = new FileCache(); 
  2. $new_arr = $cache->get('gsmcache');//yourkey是你为每一个要缓存的数据定义的缓存名字 
  3. if ($new_arr===false) { 
  4.  
  5. $new_arr="数据库返回的数据"
  6.  
  7. $cache->set('gsmcache',$new_arr,3600);//缓存3600秒 
  8.  
  9.  
  10. <?php 
  11. /** 
  12. * 文件缓存类 
  13. * 
  14. * @copyright blog.itiwin.cn 
  15. * @author  More 
  16. * @package cache 
  17. * @version v0.1 
  18. */ 
  19. class FileCache { 
  20. /** 
  21. * @var string $cachePath 缓存文件目录 
  22. * @access public 
  23. */ 
  24. public $cachePath = './'
  25.  
  26. /** 
  27. * 构造函数 
  28. * @param string $path 缓存文件目录 
  29. */ 
  30. function __construct($path = NULL) { 
  31. if ($path) { 
  32. $this->cachePath = $path
  33.  
  34. /** 
  35. * 析构函数 
  36. */ 
  37. function __destruct() { 
  38. //nothing 
  39.  
  40. /** 
  41. * 在cache中设置键为$key的项的值,如果该项不存在,则新建一个项 
  42. * @param string $key 键值 
  43. * @param mix $var 值 
  44. * @param int $expire 到期秒数 
  45. * @param int $flag 标志位 
  46. * @return bool 如果成功则返回 TRUE,失败则返回 FALSE。 
  47. * @access public 
  48. */ 
  49. public function set($key$var$expire = 36000, $flag = 0) { 
  50. $value = serialize($var); 
  51. $timeout = time() + $expire
  52. $result = safe_file_put_contents($this->cachePath . urlencode($key) .'.cache'
  53. $timeout . '<<%-==-%>>' . $value); 
  54. return $result
  55.  
  56. /** 
  57. * 在cache中获取键为$key的项的值 
  58. * @param string $key 键值 
  59. * @return string 如果该项不存在,则返回false 
  60. * @access public 
  61. */ 
  62. public function get($key) { 
  63. $file = $this->cachePath . urlencode($key) .'.cache'
  64. if (file_exists($file)) { 
  65. $content = safe_file_get_contents($file); 
  66. if ($content===false) { 
  67. return false; 
  68. $tmp = explode('<<%-==-%>>'$content); 
  69. $timeout = $tmp[0]; 
  70. $value = $tmp[1]; 
  71. if (time()>$timeout) { 
  72.  
  73. $this->delete($key) ;//删除文件过期的 
  74. $result = false; 
  75. else { 
  76. $result = unserialize($value); 
  77. else { 
  78. $result = false; 
  79. return $result
  80.  
  81. /** 
  82. * 清空cache中所有项 
  83. * @return 如果成功则返回 TRUE,失败则返回 FALSE。 
  84. * @access public 
  85. */ 
  86. public function flush() { 
  87. $fileList = FileSystem::ls($this->cachePath,array(),'asc',true); 
  88. return FileSystem::rm($fileList); 
  89.  
  90. /** 
  91. * 删除在cache中键为$key的项的值 
  92. * @param string $key 键值 
  93. * @return 如果成功则返回 TRUE,失败则返回 FALSE。 
  94. * @access public 
  95. */ 
  96. public function delete($key) { 
  97. return FileSystem::rm($this->cachePath . $key .'.cache'); 
  98.  
  99. if (!function_exists('safe_file_put_contents')) { 
  100. function safe_file_put_contents($filename$content
  101. $fp = fopen($filename'wb'); 
  102. if ($fp) { 
  103. flock($fp, LOCK_EX); 
  104. fwrite($fp$content); 
  105. flock($fp, LOCK_UN); 
  106. fclose($fp); 
  107. return true; 
  108. else { 
  109. return false; 
  110.  
  111. if (!function_exists('safe_file_get_contents')) { 
  112. function safe_file_get_contents($filename
  113. $fp = fopen($filename'rb'); 
  114. if ($fp) { 
  115. flock($fp, LOCK_SH); 
  116. clearstatcache(); 
  117. $filesize = filesize($filename); 
  118. if ($filesize > 0) { 
  119. $data = fread($fp$filesize); 
  120. flock($fp, LOCK_UN); 
  121. fclose($fp); 
  122. return $data
  123. else { 
  124. return false; 

Tags: php缓存数据库 php返回数据

分享到: