一、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
相关文章
宝塔面板如何一键安装并部署Tomcat集群环境?
PHP大文件读取怎么做_PHP逐行读取大文件【教程】
PHP怎么对数组元素进行排序_PHP函数sort使用方法【教程】
Symfony跨平台使用_MacWindowsLinux环境搭建【技巧】
页面跳转怎么实现_PHP header重定向使用【教程】
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。
26
2026.03.13
本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。
46
2026.03.12
本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。
178
2026.03.11
本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。
51
2026.03.10
本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。
92
2026.03.09
本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。
102
2026.03.06
本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。
227
2026.03.05
本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。
532
2026.03.04
2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!
171
2026.03.04
热门下载
相关下载
精品课程
最新文章

