Categories: Linux筆記

APC, Alternative PHP Cache [PHP緩存模組]

APC是什麼?這裏做個比較全面的介紹:
APC,全稱是Alternative PHP Cache,官方翻譯叫”可選PHP緩存”,但我個人覺得應該叫”另一個PHP緩存”.因為這個東西如果叫”可選PHP緩存”,容易給人一種可要可不要的,不怎麼有用的錯覺.
APC首頁: http://pecl.php.net/package/apc
目前的版本是3.1.13,通過PECL安裝,需要php4.3.0或更高版本.
APC的安裝:
一般是下載源代碼然後phpize來編譯安裝,安裝完以後在加上php.ini里加上
extension=apc.so
這麼一行就行了.

APC的使用
APC的使用其實倒說不上.APC是個優化器,自安裝之日起,就默默地在後臺為您的PHP應用服務了.您的所有PHP代碼會被緩存起來.

另外,APC可提供一定的記憶體緩存功能.但是這個功能並不是十分完美,有報告說如果頻繁使用APC緩存的寫入功能,會導致不可預料的錯誤.如果想使用這個功能,可以看看apc_fetch,apc_store等幾個與apc緩存相關的函數.
從PHP5.2開始,APC引入了一個小甜餅,解決了困擾大家已久的大檔上傳的進度條問題.具體請http://progphp.com/progress.php
APC的高級使用
1.緩存期限:
APC的緩存分兩部分:系統緩存和用戶資料緩存.
系統緩存是自動使用的,是指APC把PHP檔源碼的編譯結果緩存起來,然後在再次調用時先對比時間標記。如果未過期,則使用緩存代碼運行。默認緩存 3600s(一小時).但是這樣仍會浪費大量CPU時間.因此可以在php.ini中設置system緩存為永不過期(apc.ttl=0).不過如果這樣設置,改運php代碼後需要restart一下您的web伺服器(比如apache…).目前對APC的性能測試一般指的是這一層cache;
用戶資料緩存由用戶在編寫php代碼時用apc_store和apc_fetch函數操作讀取、寫入的.如果量不大的話我建議可以使用一下.如果量大,我建議使用memcache會更好.
如果要享受APC帶來的緩存大檔上傳進度的特性,需要在php.ini中將apc.rfc1867設為1,並且在表單中加一個隱藏域APC_UPLOAD_PROGRESS,這個域的值可以隨機生成一個hash,以確何唯一.具體例子請參見前面給出的鏈結.
2.狀態控制和分析:
APC的源碼包自帶了一個apc.php;您可以將這個檔上傳到web伺服器的某個目錄下,用流覽器訪問,這會顯示當前的狀態.我們可以從這裏的表格分析當前的緩存狀況,作出進一步優化.
apc-info-clublocalhost2.png
這是某test站點的狀態.您可以慢慢分析,這個工具會提供很多有用的工具.比如您可以看到哪些檔經常被包含(訪問),您緩存的哪個變數經常被讀取,或經常被更新等.
最後順便提一句,有獨立報告說,APC的代碼緩存、優化效果要高出zend優化器.就算不是真的,他開源而又免費,實在是一個相當不錯的選擇.

yan

Share
Published by
yan