1. 程式人生 > >php-APC介紹

php-APC介紹

前面幾篇文章提到了APC.很多人問我:APC是什麼?這裡做個比較全面的介紹:
APC,全稱是Alternative PHP Cache,官方翻譯叫”可選PHP快取”,但我個人覺得應該叫”另一個PHP快取”.
因為這個東西如果叫”可選PHP快取”,容易給人一種可要可不要的,不怎麼有用的錯覺.
APC的主頁是:<a href=”http://pecl.php.net/package/apc” mce_href=”http://pecl.php.net/package/apc”>http://pecl.php.net/package/apc</a>.
目前的版本是3.0.14,通過PECL安裝,需要php4.3.0或更高版本.
APC的安裝:
<coolcode>
extension=apc.so
</coolcode>
這麼一行就行了.
APC的使用
APC的使用其實倒說不上.APC是個優化器,自安裝之日起,就默默地在後臺為您的PHP應用服務了.您的所有PHP
程式碼會被快取起來.
另外,APC可提供一定的記憶體快取功能.但是這個功能並不是十分完美,有報告說如果頻繁使用APC快取的寫入功能,
會導致不可預料的錯誤.如果想使用這個功能,可以看看apc_fetch,apc_store等幾個與apc快取相關的函式.
從PHP5.2開始,APC引入了一個小甜餅,解決了困擾大家已久的大檔案上傳的進度條問題.具體請看看我這篇
<a href=”http://www.162cm.com/archives/406.html” mce_href=”http://www.162cm.com/archives/406.html”>blog</a>.
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伺服器的某個目錄下,用瀏覽器訪問,這會
顯示當前的狀態.我們可以從這裡的表格分析當前的快取狀況,作出進一步優化.
這是某test站點的狀態.您可以慢慢分析,這個工具會提供很多有用的工具.比如您可以看到哪些檔案經常被包含
(訪問),您快取的哪個變數經常被讀取,或經常被更新等.
最後順便提一句,有獨立報告說,APC的程式碼快取、優化效果要高出zend優化器.就算不是真的,他開源而又免費,
實在是一個相當不錯的選擇.

一般是下載原始碼然後phpize來編譯安裝,安裝完以後在加上php.ini里加上