首頁  >  文章  >  後端開發  >  php apc快取以及與redis的對比

php apc快取以及與redis的對比

WBOY
WBOY原創
2016-08-08 09:19:381439瀏覽
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的效率對比。
function getTimeStamp() {
  $timestr = microtime();
  $timestrary = explode(' ', $timestr);
  $result = intval($timestrary[1])*1000 + intval(floatval($timestrary[0])*1000);
  return $result;
} 
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$key = 'key';
$value ='value';
$redis->set($key, $value);
  
apc_store($key, $value, 1); 
  
$begin = getTimeStamp();
for($i = 0 ; $i < 100000 ; $i = $i +1) {
  $result = apc_fetch($key);
} 
$cost = getTimeStamp() - $begin;
var_dump($cost);
$begin = getTimeStamp();
for($i = 0 ; $i < 100000 ; $i = $i +1) {
  $result = $redis->get($key);
} 
$cost = getTimeStamp() - $begin;
var_dump($cost);
$redis->close();
  

都是簡單的取資料操作,分別進行10萬次,單位是毫秒。最後的運行結果redis10萬次讀在4-5秒之間,而apc得10萬次讀只有50毫秒左右。可以看到如果是簡單的快取一些數據,而這些數據不會變化且命中的話,apc還是能帶來一定的效率提升的。 安裝apc時會有一個apc.php的頁面可以透過這個頁面查看apc的命中。如下圖
APC的設定設定的範例如下:
extension= apc.so 
apc.enabled=1
apc.shm_segments=1 
apc.shm_size=64M ; apc内存的大小,最后的大小需要乘上segments的数量,所以这里一共为apc分配64M 
apc.ttl=7200 
apc.user_ttl=7200
apc.enable_cli=1 ; 这个如果不开启,则只可以在网页上进行apc操作,不能通过cli进行apc操作

參考http://www.inmotion -with-apc http://bbs.phpchina.com/thread-202432-1-1.html

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了php apc快取以及與redis的對比,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:log4php安裝下一篇:log4php安裝