一、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 服务器,使以上更新生效
四、zendencode的使用
好了,以上准备工作全部完成了,现在写一个简单的php脚本,使用zendencode编译一下,看看效果如何,好,先写一个最简单的脚本,看看编译后的代码能不能执行:
#vi test.php
phpinfo(); ?>
编译它:
#[root@mail zend]# ./zendenc test.php testencode.php
zend encoder unlimited (test drive) v1.1.0 © 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,哇,编译后的代码可以成功运行了!由于我们使用是试用版的zendencode,所以,在页面的最上面会出现一个图片,说明,这是一个由zendencode试用软件包所产生的二进制文件。如下图所示:
购买了正式版的用户,上面的图示将不会再现。
下面再看看它的执行效率吧!,首先写一个小的计算程序粗略估计一下:compute.php
$t=time();
for( $i=0;$i
if(($i )!=0) {echo $i; echo ",";}
else { echo "
";}
}
$t1=time();
echo "
"; echo "it used:"; echo $t1-$t; echo " seconds";
?>
这个程序在执行时,取系统的时间,完成后再取系统时间,两个值的差即为整个程序运行所需时间,先在没有编译的情况下执行一遍,然后用zendencode编译后再执行一遍。相互比较结果:没有编译的情况下,运行所需时间平均为19秒,编译后的代码平均执行时间为 9秒,看来执行效率是提高了不少。
五、注意
由于php的开发速度很快,其版本号也更新的很快,如果你按照以上做法做了,但是,你的浏览器显示是一团乱码,那么说明,你的php和正在使用的zendoptimizer版本不相匹配,只要重新下载相应的zendoptimizer便可解决以上乱码问题。另外,要注意你下载的软件包的版本,在 linux环境下,有glibc及libc之分。redhat 6以后的版本应该下载glibc类型的软件包。
0
0
相关文章
如何在 Laravel 中检测并返回数组中缺失的字段值
如何在 Laravel 中高效检测并提取数组中缺失的字段值
正则表达式精准提取指定 CSS 选择器后的花括号内样式规则
Laravel API 路由 404 错误的根源与正确配置方案
如何在 PHP 中批量提取 JSON 对象中所有同名键(如 "id")的值
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。
616
2026.02.13
本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。
194
2026.02.13
本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。
91
2026.02.13
本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。
20
2026.02.13
本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。
54
2026.02.13
本专题系统整理雨课堂网页版官方入口及在线登录方式,涵盖账号登录流程、官方直连入口及平台访问方法说明,帮助师生用户快速进入雨课堂在线教学平台,实现便捷、高效的课程学习与教学管理体验。
15
2026.02.12
本专题汇总豆包AI官方网页版入口及在线使用方式,涵盖智能写作工具、图片生成体验入口和官网登录方法,帮助用户快速直达豆包AI平台,高效完成文本创作与AI生图任务,实现便捷智能创作体验。
598
2026.02.12
本专题面向后端开发与数据库工程师,深入讲解 PostgreSQL 查询优化原理与索引机制。内容包括执行计划分析、常见索引类型对比、慢查询优化策略、事务隔离级别以及高并发场景下的性能调优技巧。通过实战案例解析,帮助开发者提升数据库响应速度与系统稳定性。
56
2026.02.12
热门下载
相关下载
精品课程
最新文章


