php

位置:IT落伍者 >> php >> 浏览文章

使用ZendEncode编译PHP程序


发布日期:2021年09月10日
 
使用ZendEncode编译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类型的软件包               

上一篇:PHP&MYSQL For win32 版服务器配置说明(1)

下一篇:PHP新手之学习数组声明