熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

使用ZendEncode編譯PHP程序

2022-06-13   來源: PHP編程 
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支持的操作系統有SolarisLinuxFreeBSD及WindowsZendEncode可以直接運行你的系統中不一定非要安裝php


ZendEncode的安裝 (本文以linux環境下的安裝為例說明)

先去下載一個軟件包吧!ZendEncode不是自由軟件有使用它要付費而且價格相當高幸好zendcom提供了一個可供試用的軟件包用戶可以免費試用這個軟件包可以直接從上獲得所以首先要到上下載ZendEncodeZendOptimizer軟件包其次要下載一個授權文件也即license由於ZendEncode是一個授權使用的產品所以需要用戶從zendcom上申請一個license申請卡步驟如下

要申請一個試用的license需要向zendcom提供你正在使用的計算機的id也即在申請頁中所要填寫的host ID(實際上就是你計算機上的網卡的MAC地址)查看計算機ID的方法如下從zendcom下載一個lmutilz的程序解壓後得到程序lmutil運行它會根據系統的硬件特征產生一個序列串將些序列號填入到申請license頁的hostid中zendcom會在小時內為用戶生成一個license下載此license文件文件名為zendEncodedat它是唯一可以使用在你的計算機上

將ZendEncode軟件包也解壓縮在/usr/local/Zend目錄下解壓縮完成後目錄下多了一個zendenc的文件它就是那個“編譯器”啦

將那個license文件復制到/usr/local/Zend目錄下

安裝完成

ZendOptimizer的安裝

完成了ZendEncode的安裝才完成了一半任務要使用編譯後的php二進制代碼還要安裝一個解釋器ZendOptimizer有了它的支持編譯後的php二進制文件才能被正確地執行

與ZendEncode不同ZendOptimizer是一個免費軟件它的主要功能是加速php腳本文件的運行據Zendcom稱有了ZendOptimizer的優化程序的執行效率可以提高%經過筆者的簡單測試執行效率的確是提高了不少

安裝ZendOptimizer步驟如下

解壓縮zendOptimizer軟件包將zendOptimizerso文件復制到/usr/local/Zend/lib目錄中

打開/usr/local/lib/phpini文件在文件中加入以下兩行

zend_optimizeroptimization_level=

zend_extension=”/usr/local/Zend/lib/ZendOptimizerso”

重新啟動Apache 服務器使以上更新生效


ZendEncode的使用

好了以上准備工作全部完成了現在寫一個簡單的php腳本使用zendEncode編譯一下看看效果如何先寫一個最簡單的腳本看看編譯後的代碼能不能執行

#vi testphp

<? Phpinfo(); ?>

編譯它

#[root@mail Zend]# /zendenc testphp testencodephp

Zend Encoder Unlimited (TEST DRIVE) v © Zend Technologies

Licensed to: xqkred


Compiling testphp

Done encoding testphp

Optimizing Done

Saving Done

成功編譯不過編譯好的程序大小較之以前要大很多

將testencodephp復制到Web服務器的發布目錄下在浏覽器上鍵入編譯後的代碼可以成功運行了!由於我們使用是試用版的ZendEncode所以在頁面的最上面會出現一個圖片說明這是一個由ZendEncode試用軟件包所產生的二進制文件如下圖所示


購買了正式版的用戶上面的圖示將不會再現

下面再看看它的執行效率吧!首先寫一個小的計算程序粗略估計一下computephp

<?

$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
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.