使用PHP的人都知道,Zend Encode是一个脚本编程工具,用它写的程序,必须以源码的形式放置在Web服务器上,所以我们无法保护自己的源代码。大家都知道任何一个脚本程序的执行效率同具有相同功能的编译好的二进制代码相比较,它的执行效率都是比较低的。那么要是有一个工具能够帮我们把用PHP写的程序编译成二进制代码就好了,这样不但执行效率提高了,运行速度也加快了。真要是有这么一个工具,那就是一举两得了。
现在这不是梦想了,Zend Encode就是为此而开发的,它可以直接将脚本编译成二进制码。有了Zend Encode,你就可以将自己写好的PHP程序,编译后分发给很多用户,而用不着公开自己的源程序代码。编译好的二进制代码可以被Zend Optimizer透明读取,也就是说,客户只要在他的服务器上安装Zend Optimizer就可以执行由Zend Encode编译好的PHP程序。编译程序中包含有Zend Optimizer的部分代码,所以编译过程中对程序代码进一步作了优化处理,这即意味着脚本的执行效率提高了。
从一定意义上讲,Zend Encode是一个“PHP编译器”。但是,它又不是一个真正意义上的编译器,因为真正编译完成的程序可以脱离原来的编译环境运行,而Zend Encode编译过的程序,需要有Zend Optimizer的支持。就像编译好的Java二进制代码,需要JVM的支持。所以,Zend Optimizer可以看作是PHP编译好代码的虚拟机。不管怎么说,它们要通过相互配合使用。
目前Zend Encode支持的操作系统有:Solaris、Linux、FreeBSD及Windows。Zend Encode可以直接运行,电脑系统中不一定非要安装PHP。
Zend Encode的安装
先去下载一个软件包吧!Zend Encode不是自由软件,使用它要付费,而且价格相当高。幸好zend.com提供了一个可供试用的软件包,用户可以免费试用30天。这个软件包可以直接从http://www.zend.com上获得。所以,首先要到www.zend.com上下载Zend Encode、Zend Optimizer软件包。其次,要下载一个授权文件license。由于Zend Encode是一个授权使用的产品,所以需要用户从zend.com上申请一个license。申请步骤如下:
要申请一个试用的license,需要向zend.com提供你正在使用的计算机的ID,也即在申请页中填写host ID(实际上就是你计算机上的网卡的MAC地址)。查看计算机ID的方法如下:从zend.com下载一个lmutil.z的程序,解压后得到程序lmutil,运行它,它会根据系统的硬件特征产生一个序列串。将这个序列号填入到申请license页的host ID中,zend.com会在48小时内为用户生成一个license,下载此license文件,文件名为zendEncode.dat,它只能在这台电脑上使用。
1.将Zend Encode软件包也解压缩到/usr/local/Zend目录下。解压缩完成后,目录下多了一个zendenc的文件,它就是那个“编译器”啦。
2.将那个license文件复制到/usr/local/Zend目录下安装完成。
Zend Optimizer的安装
完成了Zend Encode的安装,才完成了一半任务,要使用编译后的PHP二进制代码,还要安装一个解释器——Zend Optimizer,有了它的支持,编译后的PHP二进制文件才能被正确地执行。
与Zend Encode不同,Zend Optimizer是一个免费软件,它的主要功能是加速PHP脚本文件的运行。据Zend.com称,有了Zend Optimizer的优化,程序的执行效率可以提高600%,经过笔者的简单测试,执行效率的确是提高了不少。
安装Zend Optimizer步骤如下:
1.解压缩Zend Optimizer软件包,将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 服务器,使以上更新生效。
Zend Encode的使用
现在准备工作全部完成了,我们写一个简单的PHP脚本,使用Zend Encode编译一下,看看效果如何。先写一个最简单的脚本,看看编译后的代码能不能执行:
#vi test.PHP
<? Phpinfo(); ?>
编译它:
#[root@mail Zend]# ./zendenc test.PHP testencode.PHP
Zend Encoder Unlimited (TEST DRIVE) v1.1.0 (c) Zend Technologies, 1999-2000
Licensed to: xqkred.
Compiling test.PHP...
Done encoding test.PHP.
Optimizing... Done.
Saving... Done.
好,成功编译。不过,编译好的程序大小较之以前要大很多。
将testencode.PHP复制到Web服务器的发布目录下,在浏览器上键入http://localhost/testencode.PHP,哇!编译后的代码可以成功运行了!由于我们使用是试用版的Zend Encode,所以,在页面的最上面会出现一个图片,说明这是一个由Zend Encode试用软件包所产生的二进制文件。正式版的软件中,图片将不会再现。
下面再看看它的执行效率吧!首先写一个小的计算程序粗略估计一下:
[compute.PHP]
<?
$t=time();
for( $i=0;$i<1000000;$i ) {
if(($i )!=0) {echo $i; echo ",";}
else { echo "<br>";}
}
$t1=time();
echo "<br>"; echo "It used:"; echo $t1-$t; echo " seconds";
?>
这个程序在执行时,取系统的时间,完成后再取系统时间,两个值的差即为整个程序运行所需时间,先在没有编译的情况下执行一遍,然后用Zend Encode编译后再执行一遍。比较结果:没有编译的情况下,运行所需时间平均为19秒,编译后的代码平均执行时间为 9秒,看来执行效率是提高了不少。(出处:风闪网路学院)

用Zend Encode编写开发PHP程序的更多相关文章

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  3. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  4. PHP实现文件安全下载

    例如你希望客户要填完一份表格,才可以下载某一文件,你第一个想法一定是用"Redirect"的方法,先检查表格是否已经填写完毕和完整,然后就将网址指到该文件,这样客户才能下载,但如果你想做一个关于"网上购物"的电子商务网站,考虑安全问题,你不想用户直接复制网址下载该文件,笔者建议你使用PHP直接读取该实际文件然后下载的方法去做。feof){echofread;}fclose;}这样就可以用PHP直接输出文件了。

  5. PHP默认安装产生系统漏洞

    当你下载PHP後,在它内含的安装文件中帮助了PHP在NTApacheWebServer的安装方式,其中的安装帮助会要你将底下这几行设置加到apache的httpd.conf设置文件中,而这个安装文件将导引你将你的系统门户大开。

  6. 怎样在UNIX系统下安装php3

    #cd/usr/src#tarxvzfapache_1.3.6.tar.gz(产生apache_1.3.6目录)#tarxvzfphp-3.0.8.tar.gz(产生php-3.0.8目录)#cdapache_1.3.6#./configure--prefix=/usr/local/apache(把Apache的安装目录定为/usr/local/apache)#cdphp-3.0.8#./conf

  7. python 多线程threading程序详情

    这篇文章主要介绍了python 多线程threading程序详情,Thread类表示在单独的控制线程中运行的活动,下文相关资料需要的小伙伴可以参考一下

  8. 使用Angular.js开发的注意事项

    这篇文章主要记录了一些在学习和使用angular.js踩到的坑和需要注意的点,方便以后自己查阅,也给同样遇到这些问题的朋友们一些帮助,有需要的朋友们下面来一起看看吧。

  9. ftp类(example.php)

    flush();$ftp_ini_datei=$argv[1];require('./ftp_class.php');require($ftp_ini_datei);echo"\nCronjobstarted:";echodate("d.m.Y-H:i:s");echo"\n";$newftp=newmyftp;if(!$anonymous){$result=$newftp->connect($host,$user,$password);}else{$result=$newftp->connect($ho

  10. PHP分页显示制作详细讲解

    搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部