首页 > 语言 > PHP > 正文

PHP内存缓存Memcached类代码

2024-09-04 11:44:09
字体:
来源:转载
供稿:网友

PHP内存缓存Memcached类有需要的朋友可参考一下,PHP内存缓存Memcached类代码如下:

  1. <?PHP 
  2. class MemcacheModel { 
  3. private $mc = null; 
  4. /** 
  5. * 构造方法,用于添加服务器并创建memcahced对象 
  6. */ 
  7. function __construct(){ 
  8. $params = func_get_args(); 
  9. $mc = new Memcache; 
  10. //如果有多个memcache服务器 
  11. ifcount($params) > 1){ 
  12. foreach ($params as $v){ 
  13. call_user_func_array(array($mc'addServer'), $v); 
  14. //如果只有一个memcache服务器 
  15. else { 
  16. call_user_func_array(array($mc'addServer'), $params[0]); 
  17. }//开源代码Vevb.com 
  18. $this->mc=$mc
  19. /** 
  20. * 获取memcached对象 
  21. * @return object memcached对象 
  22. */ 
  23. function getMem(){ 
  24. return $this->mc; 
  25. /** 
  26. * 检查mem是否连接成功 
  27. * @return bool 连接成功返回true,否则返回false 
  28. */ 
  29. function mem_connect_error(){ 
  30. $stats=$this->mc->getStats(); 
  31. if(emptyempty($stats)){ 
  32. return false; 
  33. }else
  34. return true; 
  35.  
  36. private function addKey($tabName$key){ 
  37. $keys=$this->mc->get($tabName); 
  38. if(emptyempty($keys)){ 
  39. $keys=array(); 
  40. //如果key不存在,就添加一个 
  41. if(!in_array($key$keys)) { 
  42. $keys[]=$key;  //将新的key添加到本表的keys中 
  43. $this->mc->set($tabName$keys, MEMCACHE_COMPRESSED, 0); 
  44. return true;   //不存在返回true 
  45. }else
  46. return false;  //存在返回false 
  47. /** 
  48. * 向memcache中添加数据 
  49. * @param string $tabName 需要缓存数据表的表名 
  50. * @param string $sql 使用sql作为memcache的key 
  51. * @param mixed $data 需要缓存的数据 
  52. */ 
  53. function addCache($tabName$sql$data){ 
  54. $key=md5($sql); 
  55. //如果不存在 
  56. if($this->addKey($tabName$key)){ 
  57. $this->mc->set($key$data, MEMCACHE_COMPRESSED, 0); 
  58. /** 
  59. * 获取memcahce中保存的数据 
  60. * @param string $sql 使用SQL的key 
  61. * @return mixed 返回缓存中的数据 
  62. */ 
  63. function getCache($sql){ 
  64. $key=md5($sql); 
  65. return $this->mc->get($key); 
  66.  
  67.  
  68. /** 
  69. * 删除和同一个表相关的所有缓存 
  70. * @param string $tabName 数据表的表名 
  71. */  
  72. function delCache($tabName){ 
  73. $keys=$this->mc->get($tabName); 
  74. //删除同一个表的所有缓存 
  75. if(!emptyempty($keys)){ 
  76. foreach($keys as $key){ 
  77. $this->mc->delete($key, 0); //0 表示立刻删除 
  78. //删除表的所有sql的key 
  79. $this->mc->delete($tabName, 0);  
  80. /** 
  81. * 删除单独一个语句的缓存 
  82. * @param string $sql 执行的SQL语句 
  83. */ 
  84. function delone($sql){ 
  85. $key=md5($sql); 
  86. $this->mc->delete($key, 0); //0 表示立刻删除 
  87. ?> 

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