薛啟康( [email protected] )
商業應用的網站,其傳輸效率是十分重要的,通常在一些電子商務的站點上,伺服器的反應速度決定了其服務質量,伺服器的負載決定了它的最大可提供客戶的訪問容量。技術人員總是想辦法盡可能地提高伺服器的回應速度。而ZendCache也正是為了提高伺服器的回應速度而開發的優秀產品。有數據證明,使用ZendCache可以將伺服器的回應速度提高到原來的300%以上。
一、ZendCache是什麼
先看一下php是如何運作的,一個請求php腳本發到伺服器後,伺服器從磁碟上尋找對應的文件,先編譯腳本,然後執行之,最後將結果送出。所花時間由查找文件+開啟文件+讀文件+編譯文件幾部分組成。 ZendCache是一個php腳本高速Cache,它可以將剛執行的php腳本檔案的編譯結果存放在Web伺服器的記憶體中,如果下次有人再要求此頁,它就可以很快將其送出。免去了每次用戶請求php文件,伺服器都編譯一次腳本所花的時間。同時,免取了從磁碟上尋找、讀取php檔案所花費的時間。所以可以大大提高伺服器的相應速度。
目前ZendCache只能運作在Linux (glibc 2.1)、Solaris 2.6以上、FreeBSD 3.4及4.0。很可惜,目前它沿不支援Windows系統。
二、安裝及使用ZendCache
在zend.com註冊一個用戶,並以此用戶登入zend.com,然後到以下網址下載http://www.zend.com/store/products/zend-cache.php 。由於zendCache是個要會費的軟體,我們這裡只能下載一個可供使用30天的一個限制日期的試用版,不過,它是一個全功能的軟體包。試試看,你可以體驗到它強大的功能。若要下載其試用版,直接選擇「Test drive available」下載。
整個下載要分三步,第一步,下載ZendCache軟體包,直接從「Supported Platforms」中選擇對應平台的軟體包即可。注意軟體適用的平台及對應php的版本、類別庫的類型。
第二步是“Request Product License”,即從zend.com取得授權,要求用戶提供自己機器的Host ID,也即電腦上網卡的MAC位址,zend.com提供了一個讀取主機網卡位址的工具,使用者可以從zend.com是下載一個叫lmutil.Z的小程序,解壓縮後,執行它,即可獲得電腦的網卡位址。執行方法:
# ./lmutil lmhostid
即可取得主機ID。另外,使用者也可以從/var/log/messages找到網路卡的MAC位址。
這個將此ID號碼填入申請license的form中,選擇“request”,然後耐心等待,Zend.com會在48小時內給你發郵件,通知你可以去下載自己的license了。收到郵件後,直接進入http://www.zend.com/store/pickup.php去下載。 License是一個名為zend_cache.dat的檔案.
安裝(本文以linux環境下的安裝為例)
解壓縮ZendCache-1[1].0.0-PHP_4.0.4-Linux_glibc2.1-i386.tar.gz檔案
# tar –zxvf ZendCache-1[1].0.0-PHP_4.0.4-Linux_glibc2.1-i386.tar.gz
# cd ZendCache-1[1].0.0-PHP_4.0.4-Linux_glibc2.1-i386
# cp * usr/local/Zend/lib
然後,將zend_cache.dat複製到/usr/local/Zend目錄下。
接著編輯php.ini文件,加入以下幾行:
; Start of sample Zend Cache configuration section
zend_cache.use_cwd=1
zend_cache.memory_consumption=64 ; 64MB
zend_cache.validate_timestamps=1
zendr
. End of sample Zend Cache configuration section
重新啟動apache 伺服器。使剛才的改變生效。
在Web伺服器的htdocs目錄下編輯一個簡單的php檔案test.php,內容如下:
<?
Phpinfo();
? >
然後,在瀏覽器上鍵入http://localhost/test.php
如果畫面上的第二部分出現了
This program makes use of the Zend scripting language engine:
Zend Engine v1.xx, Copyright (c) 1998-2000 Zend Technologies
with Zend Cache v1.xx, Copyright (c) 1999-2000, by Zend Technologies
字樣,表示ZendCache已經正常運作了。剩下的就是看看它的Cache命中效果了。
三、測試ZendCache的命中率
隨同ZendCache軟體包解開的還有一部分php程式碼,這可以將ZendCache的命中效果直觀地顯示出來。簡單地將cache_gui這個子目錄複製到Web伺服器的htdocs目錄下。在瀏覽器url欄中鍵入http://localhost/cach_gui/index.html即可看到Cache的命中效果。如下圖所示,為筆者安裝zendCache後的命中效果圖:
如果瀏覽器中的圖形無顯示,且提示你編譯的PHP中的GD模組不支援png圖形的顯示,那麼你就得再次編譯php,讓GD模組支援png圖形顯示。有關如何編譯PHP,使它支持png的文章可以在網上查找,本文不作記述。如果你不知道自己PHP是否支援png,可以使用phpinfo()函數來檢視。一般情況下,如果在編譯時沒有特別指出要支援png,編譯時GD就不會預設支援png。
注意:如果你同時使用了ZendOptimizer,那麼,應該將以上幾行放置在ZendOptimizer之後,否則你的Apache server起不來。