首页 > 开发 > PHP > 正文

一个简单至极的PHP缓存类代码

2024-05-04 23:39:46
字体:
来源:转载
供稿:网友

这篇文章和大家分享了一个简单至极的PHP缓存类代码,缓存的应用对于php项目的开发来说尤为重要,需要的朋友可以参考下

网上关于 PHP 缓存类的资料很多,不过这个类应该是我见过功能满足需求,但又无比简洁的一个。废话不多说,直接看代码吧!

使用说明: 1、实例化

$cache = new Cache();

2、设置缓存时间和缓存目录

$cache = new Cache(60, '/any_other_path/');

第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置。

默认情况下,缓存时间是 3600 秒,缓存目录是 cache/

3、读取缓存

$value = $cache->get('data_key');

4、写入缓存

$value = $cache->put('data_key', 'data_value');

完整实例:

 

 
  1. $cache = new Cache();  
  2.  
  3. //从缓存从读取键值 $key 的数据  
  4. $values = $cache->get($key);  
  5.  
  6. //如果没有缓存数据  
  7. if ($values == false) {  
  8. //insert code here...  
  9. //写入键值 $key 的数据  
  10. $cache->put($key, $values);  
  11. else {  
  12. //insert code here...  
  13. }  

Cache.class.php

 

 
  1. <?php  
  2. class Cache {  
  3. private $cache_path;//path for the cache  
  4. private $cache_expire;//seconds that the cache expires  
  5.  
  6. //cache constructor, optional expiring time and cache path  
  7. public function Cache($exp_time=3600,$path="cache/"){  
  8. $this->cache_expire=$exp_time;  
  9. $this->cache_path=$path;  
  10. }  
  11.  
  12. //returns the filename for the cache  
  13. private function fileName($key){  
  14. return $this->cache_path.md5($key);  
  15. }  
  16.  
  17. //creates new cache files with the given data, $key== name of the cache, data the info/values to store  
  18. public function put($key, $data){  
  19. $values = serialize($data);  
  20. $filename = $this->fileName($key);  
  21. $file = fopen($filename, 'w');  
  22. if ($file){//able to create the file  
  23. fwrite($file, $values);  
  24. fclose($file);  
  25. }  
  26. else return false;  
  27. }  
  28.  
  29. //returns cache for the given key  
  30. public function get($key){  
  31. $filename = $this->fileName($key);  
  32. if (!file_exists($filename) || !is_readable($filename)){//can't read the cache  
  33. return false;  
  34. }  
  35. if ( time() < (filemtime($filename) + $this->cache_expire) ) {//cache for the key not expired  
  36. $file = fopen($filename, "r");// read data file  
  37. if ($file){//able to open the file  
  38. $data = fread($file, filesize($filename));  
  39. fclose($file);  
  40. return unserialize($data);//return the values  
  41. }  
  42. else return false;  
  43. }  
  44. else return false;//was expired you need to create new  
  45. }  
  46. }  
  47. ?> 

相信大家一定会喜欢这个简洁的php缓存类代码,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表