php apc緩衝以及與redis的對比

來源:互聯網
上載者:User

標籤:boa   分享   tool   time   cos   title   idt   fill   測試   

apc緩衝使用者資料這個會用, apc_store() 和apc_fetch()函數。

那apc 緩衝php 代碼,這個怎麼用呢?

 

原文: http://blog.csdn.net/w18704622664/article/details/47132061#

------------------------------------------------------------------------------------------------

APC簡介

APC的全稱為Alternative PHP Cache, 是一款開源的php外掛程式,用來對php的代碼或者使用者資料進行緩衝。

APC 對php代碼的緩衝

apc可以去掉php動態解析以及編譯的時間,php指令碼可以執行的更快。下面這張圖很好的說明了為什麼了apc可以讓php指令碼運行得更快。

 

PHP是一個動態指令碼語言,所以為了讓使用者在瀏覽器中看到頁面內容,伺服器必須解析php代碼從而產生想用的html代碼。從上面的圖中可以看出,在沒有apc的時候,使用者對php頁面的每一次請求,伺服器都需要進行對php進行解析,編譯以及執行,但是很多時候,只要php代碼沒有發生更改,php的執行邏輯就不會改變,也就是說解析以及編譯的過程就可以省略,直接執行然後將結果返回即可。這就是apc的工作,apc緩衝php的可執行代碼,從而去掉瞭解析以及編譯的過程,加快了php指令碼的執行速度。

APC 對使用者資料的緩衝以及

除了緩衝php代碼外,apc還可以進行使用者資料的緩衝,但是由於apc的容量很少,所以緩衝的資料最好是那些很長時間都不變的資料,不變的單位應該以天位單位。所以如果資料是變化很頻繁的並且資料量也比較大,那麼就不要使用apc了,可以使用memcache或者Redis。

下面是一個apc和redis的對比測試實驗,看一下apc和redis的效率對比。

[php] view plain copy 
  1. function getTimeStamp() {  
  2.   $timestr = microtime();  
  3.   $timestrary = explode(‘ ‘, $timestr);  
  4.   $result = intval($timestrary[1])*1000 + intval(floatval($timestrary[0])*1000);  
  5.   return $result;  
  6. }   
  7. $redis = new Redis();  
  8. $redis->connect(‘127.0.0.1‘, 6379);  
  9. $key = ‘key‘;  
  10. $value =‘value‘;  
  11. $redis->set($key, $value);  
  12.     
  13. apc_store($key, $value, 1);   
  14.     
  15. $begin = getTimeStamp();  
  16. for($i = 0 ; $i < 100000 ; $i = $i +1) {  
  17.   $result = apc_fetch($key);  
  18. }   
  19. $cost = getTimeStamp() - $begin;  
  20. var_dump($cost);  
  21. $begin = getTimeStamp();  
  22. for($i = 0 ; $i < 100000 ; $i = $i +1) {  
  23.   $result = $redis->get($key);  
  24. }   
  25. $cost = getTimeStamp() - $begin;  
  26. var_dump($cost);  
  27. $redis->close();  
  28.     

 

都是簡單的取資料操作,分別進行10萬次,單位是毫秒。最後的運行結果redis10萬次讀在4-5秒之間,而apc得10萬次讀只有50毫秒左右。可以看到如果是簡單的緩衝一些資料,並且這些資料不會變化且命中的話,apc還是能帶來一定的效率提升的。

安裝apc時會有一個apc.php的頁面可以通過這個頁面查看apc的命中。如

 

APC的配置

 

配置的例子如下:

 

[php] view plain copy 
    1. extension= apc.so   
    2. apc.enabled=1  
    3. apc.shm_segments=1   
    4. apc.shm_size=64M ; apc記憶體的大小,最後的大小需要乘上segments的數量,所以這裡一共為apc分配64M   
    5. apc.ttl=7200   
    6. apc.user_ttl=7200  
    7. apc.enable_cli=1 ; 這個如果不開啟,則只可以在網頁上進行apc操作,不能通過cli進行apc操作  

php apc緩衝以及與redis的對比

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.