一、ZendEncode的工作原理
使用PHP的人都知道,它是一個指令碼編程工具,由它寫的程式,必須以源碼的形式放置在Web伺服器上,所以我們無法保護自己的原始碼。而且各位都知道任何一個指令碼程式的執行效率同具有相同功能的編譯好的二進位代碼相比較,它的執行效率都是比較慢的。那麼要是有一個工具能夠幫我們把用php寫的程式編譯成二進位代碼就好了,這樣不但執行效率提高了,運行速度也加快了。真要是有這麼一個工具,那就是一取兩得了。
剛好,剛剛發布的ZendEncode就是為此而開發的。ZendEncode可以直接將指令碼編譯成二進位碼。有了ZendEncode,你就可以將自己寫好的php程式,編譯後分發給很多使用者,而用不著公開自己的來源程式代碼。編譯好的二進位代碼可以被zend Optimizer透明讀取,也就是說,客戶只要在他的伺服器上安裝Zend Optimizer就可以執行由ZendEncode編譯好的php程式。編譯器中包含有Zend Optimizer的部分代碼,所以編譯過程中對程式碼進一步作了最佳化處理,這即意味著指令碼的執行效率提高了。
從一定意義上講,ZendEncode是一個“PHP編譯器”。但是,它又不是一個真正意義上的編譯器,真正意義上的編譯器會脫離原來的編譯環境運行,而ZendEncode編譯過的程式,還要有ZendOptimizer的支援,就如同是編譯好的java二進位代碼,其要有一個JVM來運行。所以,ZendOptimizer又可以看作是php編譯好代碼的虛擬機器。不管怎麼說,就是這麼一個東西,它們要通過相互配合使用。
目前ZendEncode支援的作業系統有:Solaris,Linux,FreeBSD及Windows。ZendEncode可以直接運行,你的系統中不一定非要安裝php。
二、ZendEncode的安裝 (本文以linux環境下的安裝為例說明)
先去下載一個軟體包吧!ZendEncode不是自由軟體有,使用它要付費,而且價格相當高。幸好zend.com提供了一個可供試用的軟體包,使用者可以免費試用30天。這個軟體包可以直接從http://www.zend.com/上獲得。所以,首先要到http://www.zend.com/上下載ZendEncode、ZendOptimizer軟體包。其次,要下載一個授權檔案,也即license。由於ZendEncode是一個授權使用的產品,所以需要使用者從zend.com上申請一個license。申請卡步驟如下:
要申請一個試用的license,需要向zend.com提供你正在使用的電腦的id,也即在申請頁中所要填寫的host ID(實際上就是你電腦上的網卡的MAC地址),查看電腦ID的方法如下:從zend.com下載一個lmutil.z的程式,解壓後得到程式lmutil,運行它,會根據系統的硬體特徵產生一個序列串。將些序號填入到申請license頁的hostid中,zend.com會在48小時內為使用者產生一個license,下載此license檔案,檔案名稱為zendEncode.dat,它是唯一可以使用在你的電腦上。
1、 將ZendEncode軟體包也解壓縮在/usr/local/Zend目錄下。解壓縮完成後,目錄下多了一個zendenc的檔案,它就是那個“編譯器”啦。
2、 將那個license檔案複製到/usr/local/Zend目錄下
安裝完成。
三、ZendOptimizer的安裝
完成了ZendEncode的安裝,才完成了一半任務,要使用編譯後的php二進位代碼,還要安裝一個解譯器-ZendOptimizer,有了它的支援,編譯後的php二進位檔案才能被正確地執行。
與ZendEncode不同,ZendOptimizer是一個免費軟體,它的主要功能是加速php指令檔的運行,據Zend.com稱,有了ZendOptimizer的最佳化,程式的執行效率可以提高600%,經過筆者的簡單測試,執行效率的確是提高了不少。
安裝ZendOptimizer步驟如下:
1、 解壓縮zendOptimizer軟體包,將zendOptimizer.so檔案複製到/usr/local/Zend/lib目錄中
2、 開啟/usr/local/lib/php.ini檔案,在檔案中加入以下兩行:
zend_optimizer.optimization_level=15
zend_extension=”/usr/local/Zend/lib/ZendOptimizer.so”
3、 重新啟動Apache 伺服器,使以上更新生效