国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

emlog中使用memcache緩存配置修改方法

2024-05-04 21:47:48
字體:
來源:轉載
供稿:網友

emlog使用的是文件緩存了,不管文件緩存多好也好不過memcache緩存了,關于memcache緩存優于文件緩存我們就不介紹了,下面簡單的看看配置方法吧.

這次只是簡單的HACK emlog cache程序,使用memcache緩存,畢竟memcache緩存在內存, 文件緩存在硬盤(要看I/O的性能),一般來說內存的性能大于硬盤,所以一般來說memcache緩存優于文件緩存.

memcache相對于文件緩存的優點:

1、讀寫性能優異,特別是高并發時和文件緩存比有明顯優勢.

2、memcached組建支持集群,并且是自動管理負載均衡.

注意:memcache的原理是內存分塊,單個item大于1M的數據存memcache和讀取速度可能有點慢.

具體的情況這邊我這里就不測試了,大家可以幫忙測試看看.

1、替換文件緩存為memcache緩存

2、去除文件緩存寫入和讀取

注意:雖然不涉及數據庫操作,但是還是請在修改前備份數據.

1、首先添加memcache類文件Mcache.php,放在include/lib文件夾下,服務器地址和端口地址在該文件中,請你自己配置,代碼如下:

  1. /**   
  2.  * 此類為單例模式,取得實例方法: $cache = MCache::getInstance(); 
  3.  * @author Star.Yu <vip@myxzy.com>  
  4.  * @date 2014.5.25 
  5.  * 
  6.  */ 
  7. class MCache{ 
  8.  private static $_instance
  9.  private static $_connect_type = ''
  10.  private $_memcache
  11.  
  12.  /** 
  13.   * 私有化構造函數,禁止使用關鍵字new來實例Mcache類 
  14.   */ 
  15.  private function __construct() { 
  16.   if (!class_exists('Memcache')) { 
  17.    throw new Exception('Class Memcache not exists'); 
  18.   }  
  19.   $conn = self::$_connect_type
  20.   $this->_memcache = new Memcache(); 
  21.   $this->_memcache->$conn('localhost''11211'); 
  22.  } 
  23.  
  24.  /** 
  25.   * 克隆私有化,禁止克隆實例 
  26.   */ 
  27.  private function __clone() {} 
  28.  
  29.  /** 
  30.   * 類入口,通過此靜態方法對類進行實例化 
  31.   */ 
  32.  public static function getInstance($type = 'connect'){ 
  33.   self::$_connect_type = ($type == 'connect') ? $type : 'pconnect'
  34.   if (!self::$_instance instanceof self) { 
  35.    self::$_instance = new self(); 
  36.   } 
  37.   return self::$_instance
  38.  } 
  39.  
  40.  /** 
  41.   * 把數據添加到緩存 
  42.   * @param string $key 緩存的key 
  43.   * @param string|array|int... $value 緩存的數據 
  44.   * @param int $flag  使用zlib MEMCACHE_COMPRESSED 
  45.   * @param int $expire_time  緩存時間 
  46.   */ 
  47.  public function set($key$value,$flag = 0 ,$expire_t(www.111cn.net)ime = 0){ 
  48.    $this->_memcache->set($key$value$flag$expire_time);    
  49.  } 
  50.  
  51.  /** 
  52.   * 替換緩存數據 
  53.   * @param string $key 緩存的key 
  54.   * @param string|array|int... $value 緩存的數據 
  55.   * @param int $flag  使用zlib MEMCACHE_COMPRESSED 
  56.   * @param int $expire_time  緩存時間 
  57.   */ 
  58.  public function replace($key$value,$flag = 0 , $expire_time = 0){ 
  59.    $this->_memcache->replace($key$value$flag$expire_time);    
  60.  } 
  61.  
  62.  /** 
  63.   * 從緩存讀取數據 
  64.   * @param string|array|int... $key 
  65.   */ 
  66.  public function get($key){ 
  67.   return $this->_memcache->get($key);  
  68.  } 
  69.  
  70.  /** 
  71.   * 從緩存刪除數據 
  72.   * @param string|array|int... $key 
  73.   */ 
  74.  public function del($key,$expire_time = 0){ 
  75.   $this->_memcache->delete($key$expire_time);   
  76.  } 
  77.  
  78.  public function close(){ 
  79.  return $this->_memcache->close();  
  80.  } 

2、修改include/lib/cache.php,添加實例,第29行修改為如下代碼:

  1. private function __construct() { 
  2.   $this->db = Database::getInstance(); 
  3.   $this->memcache = MCache::getInstance(); 
  4.  } 3、修改include/lib/cache.php的讀寫memcache緩存,大概507行下面的cacheWrite和readCache函數修改為 
  5.  /** 
  6.   * 寫入緩存 
  7.   */ 
  8.  function cacheWrite ($cacheData$cacheName) { 
  9.   $this->memcache->set($cacheName,$cacheData); 
  10.  } 
  11.  
  12.  /** 
  13.   * 讀取緩存文件Vevb.com
  14.   */ 
  15.  function readCache($cacheName) { 
  16.   if($this->memcache->get($cacheName)===false){call_user_func(array($this'mc_' . $cacheName));} 
  17.   $data = $this->memcache->get($cacheName); 
  18.   $this->{$cacheName.'_cache'} = unserialize($data); 
  19.   return $this->{$cacheName.'_cache'}; 
  20.  } 

到此修改已經完畢,已經緩存了文件緩存到memcache緩存中了,如有什么問題可以留言評論.

卸載方法:如果不想用memcache緩存了,就用原版的cache.php替換掉修改的cache.php,然后刪除Mcache.php即可.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德昌县| 汶川县| 平邑县| 新晃| 姚安县| 陕西省| 汉阴县| 岳普湖县| 滨海县| 鹤庆县| 横山县| 肥西县| 揭西县| 新安县| 孟州市| 峨眉山市| 革吉县| 唐河县| 仙游县| 库尔勒市| 平邑县| 灯塔市| 那曲县| 九江县| 拉萨市| 金川县| 青海省| 尼勒克县| 调兵山市| 望谟县| 蒙自县| 都匀市| 西华县| 乌兰浩特市| 平泉县| 陆丰市| 沁阳市| 阳西县| 宣恩县| 武隆县| 武山县|