apc的全稱為alternative php cache, 是一款開源的php外掛程式,用來對php的**或者使用者資料進行快取。
apc可以去掉php動態解析以及編譯的時間,php指令碼可以執行的更快。下面這張圖很好的說明了為什麼了apc可以讓php指令碼執行得更快。
php是乙個動態指令碼語言,所以為了讓使用者在瀏覽器中看到頁面內容,伺服器必須解析php**從而生成想用的html**。從上面的圖中可以看出,在沒有apc的時候,使用者對php頁面的每一次請求,伺服器都需要進行對php進行解析,編譯以及執行,但是很多時候,只要php**沒有發生更改,php的執行邏輯就不會改變,也就是說解析以及編譯的過程就可以省略,直接執行然後將結果返回即可。這就是apc的工作,apc快取php的可執行**,從而去掉了解析以及編譯的過程,加快了php指令碼的執行速度。
除了快取php**外,apc還可以進行使用者資料的快取,但是由於apc的容量很少,所以快取的資料最好是那些很長時間都不變的資料,不變的單位應該以天位單位。所以如果資料是變化很頻繁的並且資料量也比較大,那麼就不要使用apc了,可以使用memcache或者redis。
下面是乙個apc和redis的對比測試實驗,看一下apc和redis的效率對比。
function gettimestamp()
$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)
$cost = gettimestamp() - $begin;
var_dump($cost);
$begin = gettimestamp();
for($i = 0 ; $i < 100000 ; $i = $i +1)
$cost = gettimestamp() - $begin;
var_dump($cost);
$redis->close();
都是簡單的取資料操作,分別進行10萬次,單位是毫秒。最後的執行結果redis10萬次讀在4-5秒之間,而apc得10萬次讀只有50毫秒左右。可以看到如果是簡單的快取一些資料,並且這些資料不會變化且命中的話,apc還是能帶來一定的效率提公升的。
安裝apc時會有乙個apc.php的頁面可以通過這個頁面檢視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操作
php apc快取以及與redis的對比
apc快取使用者資料這個會用,apc store 和apc fetch 函式。那apc 快取php 這個怎麼用呢?原文 apc的全稱為alternative php cache,是一款開源的php外掛程式,用來對php的 或者使用者資料進行快取。apc可以去掉php動態解析以及編譯的時間,php指令...
php apc快取以及與redis的對比
apc快取使用者資料這個會用,apc store 和apc fetch 函式。那apc 快取php 這個怎麼用呢?原文 apc的全稱為alternative php cache,是一款開源的php外掛程式,用來對php的 或者使用者資料進行快取。apc可以去掉php動態解析以及編譯的時間,php指令...
設定log快取 node多級快取之redis快取
在node專案開發過程中,快取常常被用來解決高效能 高併發等問題。在我們的實際專案中,運用快取的思路是記憶體快取 介面 檔案快取。前面的總結中已經詳細的說明了怎麼實現和封裝記憶體快取和檔案快取。雖然二級快取已經基本能夠滿足現在的所有場景需求,但現在我們再加一級redis快取,從而使我們的專案更加穩定...