### ZendCache：让网站飞起来

对商业网站来说，效率是十分重要的。在一些电子商务的站点上，服务器的响应速度决定了其服务质量，而服务器的负载又决定了它可提供的最大访问容量。技术人员总是想尽办法提高服务器的响应速度。

ZendCache——就是一个提高服务器的响应速度的一个优秀产品。有数据证明，使用 ZendCache 可以将服务器的响应速度提高到原来的 300%以上。

ZendCache 是什么

先看一下 PHP 是如何运行的，一个请求 PHP 脚本发到服务器后，服务器从磁盘上查找相应的文件，先编译脚本，然后执行它，最后将结果送出。所花时间由：查找文件+打开文件+读文件+编译文件几部分组成。ZendCache 是一个 PHP 脚本高速 Cache，它可以将刚执行的 PHP 脚本文件的编译结果存放在 Web 服务器的内存中，如果下一次有人再请求此页，它就可以很快将其送出。免去了每次用户请求 PHP 文件，服务器都编译一次脚本所花的时间。同时，免取了从磁盘上查找、读取 PHP 文件所花的时间。所以，它可以大大提高服务器的响应速度。

目前 ZendCache 只能运行在 Linux (glibc 2.1)、Solaris 2.6 以上、FreeBSD 3.4 及 4.0。很可惜，目前它还不支持 Windows 系统。

安装及使用 ZendCache

在 zend.com 上注册一个用户，以此用户登录 zend.com，然后到以下地址下载 http://www.zend.com/store/products/zend-cache.php。由于 ZendCache 是一个需要付费的软件，所以我们只能下载一个可供使用 30 天的试用版，不过，它是一个全功能的软件包。试试看，你可以体验到它强大的功能。要下载其试用版，直接选择“Test drive available”下载。

整个下载要分三步，第一步，下载 ZendCache 软件包。直接从“Supported Platforms”中选择相应平台的软件包即可。注意软件适用的平台及相应 PHP 的版本、类库的类型。

第二步，“Request Product License”(即从 zend.com 取得授权)。要求用户提供自己机器的 Host ID，也即计算机上网卡的 MAC 地址。zend.com 提供了一个读取主机网卡地址的工具，用户可以从 zend.com 下载一个叫 lmutil.Z 的小程序，解压缩后，执行它，即可获得计算机的网卡地址。执行方法：

# ./lmutil lmhostid

另外，用户也可以从/var/log/messages 中查到网卡的 MAC 地址。

将此 ID 号填入申请 license 的 Form 中，选择“request”，然后耐心等待。Zend.com 会在 48 小时内给你发邮件，通知你可以去下载自己的 License 了。

第三步，收到邮件后，直接进入 http://www.zend.com/store/pickup.php 去下载。License 是一个名为 zend_cache.dat 的文件。

Linux 环境下的安装过程

首先，解压缩 ZendCache-1[1].0.0-PHP_4.0.4-Linux_glibc2.1-i386.tar.gz 文件：

# tar -zxvf ZendCache-1[1].0.0-PHP_4.0.4-Linux_glibc2.1-i386.tar.gz

# cd ZendCache-1[1].0.0-PHP_4.0.4-Linux_glibc2.1-i386

# cp *.so /usr/local/Zend/lib

然后，将 zend_cache.dat 复制到/usr/local/Zend 目录下。

接下来，编辑 php.ini 文件，加入以下几行：

; Start of sample Zend Cache configuration section

zend_cache.use_cwd=1

zend_cache.memory_consumption=64 ; 64MB

zend_cache.validate_timestamps=1

zend_extension=/usr/local/lib/ZendCache.so

; End of sample Zend Cache configuration section

重新启动 Apache 服务器，使刚才的改动生效。

在 Web 服务器的 htdocs 目录下编辑一个简单的 PHP 文件 test.php，内容如下：

＜？

Phpinfo();

？＞

最后，在浏览器上键入:localhost/test.php,如果屏幕上的第二部分出现了如下内容，则表示 ZendCache 已经正常工作了。剩下的就是看 Cache 的命中效果了。

This program makes use of the Zend scripting language engine:

Zend Engine v1.x.x, Copyright (c) 1998-2000 Zend Technologies with Zend Cache v1.x.x, Copyright (c) 1999-2000, by Zend Technologies

测试 ZendCache 的命中率

随同 ZendCache 软件包解开的还有一部分 PHP 代码，在浏览器中调用它们可以将 ZendCache 的命中效果直观地显示出来。简单地将 cache_gui 这个子目录复制到 Web 服务器的 htdocs 目录下。在浏览器 URL 栏中键入 http://localhost/cach_gui/index.html 即可看到 Cache 的命中效果(如附图所示)。

如果浏览器中的图形无显示，且提示你编译的 PHP 中的 GD 模块不支持 png 图形的显示，那么你还得再次编译 PHP，使 GD 模块支持 png 图形显示。有关如何编译 PHP，使它支持 png 的文章可以在网上查找，本文不作记述。如果你不知道自己的 PHP 是否支持 png，可以使用 phpinfo()函数查看。一般情况下，如果在编译时没有特别指出要支持 png，编译时 GD 就不会默认支持 png。

注意：如果你同时使用了 Zend Optimizer，那么，应该将以上几行放置在 Zend Optimizer 之后，否则你的 Apache server 将无法启动。