一
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提供了一個可供試用的軟件包
用戶可以免費試用
天
這個軟件包可以直接從上獲得
所以
首先要到上下載ZendEncode
ZendOptimizer軟件包
其次
要下載一個授權文件
也即license
由於ZendEncode是一個授權使用的產品
所以需要用戶從zend
com上申請一個license
申請卡步驟如下
要申請一個試用的license
需要向zend
com提供你正在使用的計算機的id
也即在申請頁中所要填寫的host ID(實際上就是你計算機上的網卡的MAC地址)
查看計算機ID的方法如下
從zend
com下載一個lmutil
z的程序
解壓後得到程序lmutil
運行它
會根據系統的硬件特征產生一個序列串
將些序列號填入到申請license頁的hostid中
zend
com會在
小時內為用戶生成一個license
下載此license文件
文件名為zendEncode
dat
它是唯一可以使用在你的計算機上
將ZendEncode軟件包也解壓縮在/usr/local/Zend目錄下
解壓縮完成後
目錄下多了一個zendenc的文件
它就是那個“編譯器”啦
將那個license文件復制到/usr/local/Zend目錄下
安裝完成
三
ZendOptimizer的安裝
完成了ZendEncode的安裝
才完成了一半任務
要使用編譯後的php二進制代碼
還要安裝一個解釋器
ZendOptimizer
有了它的支持
編譯後的php二進制文件才能被正確地執行
與ZendEncode不同
ZendOptimizer是一個免費軟件
它的主要功能是加速php腳本文件的運行
據Zend
com稱
有了ZendOptimizer的優化
程序的執行效率可以提高
%
經過筆者的簡單測試
執行效率的確是提高了不少
安裝ZendOptimizer步驟如下
解壓縮zendOptimizer軟件包
將zendOptimizer
so文件復制到/usr/local/Zend/lib目錄中
打開/usr/local/lib/php
ini文件
在文件中加入以下兩行
zend_optimizer
optimization_level=
zend_extension=”/usr/local/Zend/lib/ZendOptimizer
so”
重新啟動Apache 服務器
使以上更新生效
四
ZendEncode的使用
好了
以上准備工作全部完成了
現在寫一個簡單的php腳本
使用zendEncode編譯一下
看看效果如何
好
先寫一個最簡單的腳本
看看編譯後的代碼能不能執行
#vi test
php
<? Phpinfo(); ?>
編譯它
#[root@mail Zend]#
/zendenc test
php testencode
php
Zend Encoder Unlimited (TEST DRIVE) v
© Zend Technologies
Licensed to: xqkred
Compiling test
php
Done encoding test
php
Optimizing
Done
Saving
Done
好
成功編譯
不過
編譯好的程序大小較之以前要大很多
將testencode
php復制到Web服務器的發布目錄下
在浏覽器上鍵入
哇
編譯後的代碼可以成功運行了!由於我們使用是試用版的ZendEncode
所以
在頁面的最上面會出現一個圖片
說明
這是一個由ZendEncode試用軟件包所產生的二進制文件
如下圖所示
購買了正式版的用戶
上面的圖示將不會再現
下面再看看它的執行效率吧!
首先寫一個小的計算程序粗略估計一下
compute
php
<?
$t=time();
for( $i=
;$i<
;$i ) {
if(($i )!=
) {echo $i; echo "
";}
else { echo "<br>";}
}
$t
=time();
echo "<br>"; echo "It used:"; echo $t
$t; echo " seconds";
?>
這個程序在執行時
取系統的時間
完成後再取系統時間
兩個值的差即為整個程序運行所需時間
先在沒有編譯的情況下執行一遍
然後用ZendEncode編譯後再執行一遍
相互比較結果
沒有編譯的情況下
運行所需時間平均為
秒
編譯後的代碼平均執行時間為
秒
看來執行效率是提高了不少
五
注意
由於php的開發速度很快
其版本號也更新的很快
如果你按照以上做法做了
但是
你的浏覽器顯示是一團亂碼
那麼說明
你的php和正在使用的ZendOptimizer版本不相匹配
只要重新下載相應的ZendOptimizer便可解決以上亂碼問題
另外
要注意你下載的軟件包的版本
在 linux環境下
有glibc及libc之分
Redhat
以後的版本應該下載glibc類型的軟件包
From:http://tw.wingwit.com/Article/program/PHP/201405/30960.html