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

首頁 > 開發(fā) > PHP > 正文

linux下yum安裝PHP APC與使用實例

2024-05-04 21:48:29
字體:
供稿:網(wǎng)友

今天要做一個大文件上傳進度效果,后來網(wǎng)上說有php apc可以實現(xiàn),后來百度了一下php apc信息,PHP APC提供兩種緩存功能,即緩存Opcode(目標(biāo)文件),我們稱之為apc_compiler_cache,同時它還提供一些接口用于PHP開發(fā)人員將用戶數(shù)據(jù)駐留在內(nèi)存中,我們稱之為apc_user_cache,想用一下APC緩存到底效果如何,無奈在windows找不到相應(yīng)版本的php-apc.dll擴展文件,只好在linux下安裝了,不用源碼方式安裝,直接yum就行了.

首先要安裝apc的依賴包,代碼如下:

yum install php-pear php-devel httpd-devel pcre-devel gcc make

然后使用pecl安裝apc,代碼如下:pecl install apc

添加apc擴展到配置文件,代碼如下:

echo "extension=apc.so" > /etc/php.d/apc.ini

最后記得重啟服務(wù)器,代碼如下:

service httpd restart 

然后用PHP的phpinfo()函數(shù)可以檢測到.

APC緩存函數(shù)實例:在APC中我們也可以享受APC帶來的緩存大文件上傳進度的特性,需要在php.ini中將apc.rfc1867設(shè)為1,并且在表單中加一個隱藏域 APC_UPLOAD_PROGRESS,這個域的值可以隨機生成一個hash,以確保唯一.

APC有很多設(shè)置,你可以在php.ini中對它設(shè)置,代碼如下:

  1. [APC] 
  2. apc.enabled = 1 
  3. apc.shm_segments = 1 
  4. apc.shm_size = 64 
  5. apc.max_file_size = 10M 
  6. apc.stat=1 

我試用了下PHP中常見的APC函數(shù),代碼如下:

  1. <?php 
  2.  
  3. /*添加變量到數(shù)據(jù)存儲 
  4. bool apc_add ( string $key , mixed $var [, int $ttl = 0 ] ) 
  5. 如果key存在了,不會覆蓋,但返回false 
  6. */ 
  7. apc_add('url','http://www.survivalescaperooms.com'); 
  8.  
  9. /*從緩存中取出存儲的變量 
  10. mixed apc_fetch ( mixed $key [, bool &$success ] ) 
  11. */ 
  12. var_dump(apc_fetch('url')); 
  13.  
  14. /*使用 apc_store() 存儲的變量,.key是唯一的,所以 兩個值使用同一個名稱,原來的將被新的值覆蓋 
  15. bool apc_store ( string $key , mixed $var [, int $ttl = 0 ] ) 
  16. */ 
  17. apc_store('var','新的變量'); 
  18.  
  19. /*從用戶緩存中刪除某個變量 
  20. mixed apc_delete ( string $key ) 
  21. */ 
  22. apc_delete('url'); 
  23.  
  24. /*清楚apc緩存 
  25. bool apc_clear_cache ([ string $cache_type ] ) 
  26. */ 
  27. apc_clear_cache('user'); 
  28.  
  29. /*檢查APC中是否存在某個或者某些key,如果Key存在的話返回 TRUE , 否則返回 FALSE 
  30. mixed apc_exists ( mixed $keys ) 
  31. */ 
  32. if(apc_exsists('url')){ 
  33.  echo "這個key真存在"
  34. }else
  35.  echo "貌似這個key是不存在的"
  36.  
  37. /*遞增一個儲存的數(shù)字,成功時返回 key 的當(dāng)前值, 或者在失敗時返回 FALSE 
  38. int apc_inc ( string $key [, int $step = 1 [, bool &$success ]] ) 
  39. */ 
  40. apc_store('anumber', 42); 
  41. $ret = apc_inc('anumber', 1, $fail); 
  42. var_dump($ret); 
  43. var_dump($fail); 
  44.  
  45. /*遞減一個存儲變量的數(shù)字,成功時返回 key 的當(dāng)前值, 或者在失敗時返回 FALSE 
  46. int apc_dec ( string $key [, int $step = 1 [, bool &$success ]] ) 
  47. */ 
  48. $ret = apc_dec('astring', 1, $fail); 
  49. var_dump($ret); 
  50. var_dump($fail); 
  51. ?> 

另外提供一個很好用的APC緩存類,代碼如下:

  1. <?php 
  2.  
  3. /********************************************************************************* 
  4.  * APC緩存類,版權(quán)(摘自InitPHP框架) 
  5. ***********************************************************************************/ 
  6. class MyApc { 
  7.  
  8.  /** 
  9.   * Apc緩存-設(shè)置緩存 
  10.   * 設(shè)置緩存key,value和緩存時間 
  11.   * @param  string $key   KEY值 
  12.   * @param  string $value 值 
  13.   * @param  string $time  緩存時間 
  14.   */ 
  15.  public function set_cache($key$value$time = 0) {  
  16.   if ($time == 0) $time = null; //null情況下永久緩存 
  17.   return apc_store($key$value$time);; 
  18.  } 
  19.  
  20.  
  21.  /** 
  22.   * Apc緩存-獲取緩存 
  23.   * 通過KEY獲取緩存數(shù)據(jù) 
  24.   * @param  string $key   KEY值 
  25.   */ 
  26.  public function get_cache($key) { 
  27.   return apc_fetch($key); 
  28.  } 
  29.  
  30.  /** 
  31.   * Apc緩存-清除一個緩存 
  32.   * 從memcache中刪除一條緩存 
  33.   * @param  string $key   KEY值 
  34.   */ 
  35.  public function clear($key) { 
  36.   return apc_delete($key); 
  37.  } 
  38.  
  39.  /** 
  40.   * Apc緩存-清空所有緩存 
  41.   * 不建議使用該功能 
  42.   * @return 
  43.   */ 
  44.  public function clear_all() { 
  45.   apc_clear_cache('user'); //清除用戶緩存 
  46.   return apc_clear_cache(); //清楚緩存 
  47.  } 
  48.  
  49.  /** 
  50.   * 檢查APC緩存是否存在 
  51.   * @param  string $key   KEY值 
  52.   */ 
  53.  public function exists($key) { 
  54.   return apc_exists($key); 
  55.  } 
  56.  
  57.  /** 
  58.   * 字段自增-用于記數(shù) 
  59.   * @param string $key  KEY值 
  60.   * @param int    $step 新增的step值 
  61.   */ 
  62.  public function inc($key$step) { 
  63.   return apc_inc($key, (int) $step); 
  64.  } 
  65.  
  66.  /** 
  67.   * 字段自減-用于記數(shù) 
  68.   * @param string $key  KEY值 
  69.   * @param int    $step 新增的step值 
  70.   */ 
  71.  public function dec($key$step) { 
  72.   return apc_dec($key, (int) $step); 
  73.  } 
  74.  
  75.  /** 
  76.   * 返回APC緩存信息 
  77.   */ 
  78.  public function info() { 
  79.   return apc_cache_info(); 
  80.  } 
  81.  
  82. //使用方法如下: 
  83. $apc = new MyApc(); 
  84. $apc->set_cache('key','test by www.survivalescaperooms.com'); 
  85. print_r($apc->get_cache('key')); 
  86. ?> 

總結(jié):

1,使用Spinlocks鎖機制,能夠達到最佳性能。

2,APC提供了apc.php,用于監(jiān)控與管理APC緩存。不要忘記修改管理員名和密碼

3,APC默認通過mmap匿名映射創(chuàng)建共享內(nèi)存,緩存對象都存放在這塊”大型”的內(nèi)存空間。由APC自行管理該共享內(nèi)存

4,我們需要通過統(tǒng)計調(diào)整apc.shm_size、apc.num_files_hints、apc.user_entries_hint的值。直到最佳

5,好吧,我承認apc.stat = 0 可以獲得更佳的性能。要我做什么都可以接受.

6,PHP預(yù)定義常量,可以使用apc_define_constants()函數(shù)。不過據(jù)APC開發(fā)者介紹說pecl hidef性能更佳,拋異define吧,它是低效的。

7,函數(shù)apc_store(),對于系統(tǒng)設(shè)置等PHP變量,生命周期是整個應(yīng)用(從httpd守護進程直到httpd守護進程關(guān)閉),使用APC比Memcached會更好。必竟不要經(jīng)過網(wǎng)絡(luò)傳輸協(xié)議tcp。

8,APC不適于通過函數(shù)apc_store()緩存頻繁變更的用戶數(shù)據(jù),會出現(xiàn)一些奇異現(xiàn)象.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 衡东县| 新密市| 呼伦贝尔市| 伊吾县| 南通市| 万载县| 岚皋县| 南乐县| 那坡县| 海南省| 连江县| 延吉市| 枝江市| 南靖县| 定州市| 绥江县| 莆田市| 阿坝县| 浦江县| 星座| 荔浦县| 赤峰市| 毕节市| 阜城县| 丹阳市| 惠东县| 芒康县| 西乌| 乐亭县| 张北县| 河北区| 中宁县| 东源县| 靖安县| 平定县| 云安县| 思茅市| 兴义市| 惠水县| 吐鲁番市| 凤城市|