Archive for 八月, 2006

  作为流行的 Web 编程语言, PHP 的最大优势就是速度。 PHP4 已经在这方面做的非常好了,你几乎找不到比它更快的脚本编程语言了。但是如果你的应用负荷很大,而带宽又比较小,或者有其他的瓶颈影响你的服务器性能,那么,你不妨试试笔者为你开出的几个药方,看看是否灵验。

  一、代码优化

  一谈到代码优化,或许你想到的就是整齐明了的代码,但是本文的意思却不是在此,因为如果要寻求速度的话,就要对PHP 源码作相应的调整。一般说来就是去掉多余的注释,让代码不可读。但是这对于一个具有良好素养的程序员来说,简直就是不可思议的。好在Zend Technologies 公司发布了 Zend 优化引擎可以帮助你做到这一点。它现在是免费的,但是你必须遵循 Zend Optimizer 许可。这个产品可以对引擎产生的中间代码进行优化。

  安装这个引擎比较简单,下载对应平台的版本以后,解开压缩文件,然后在 php.ini 文件里面加上下面两行,重新启动 Web 服务器,就搞定了。

zend_optimizer.optimization_level=15

zend_extension="/path/to/ZendOptimizer.so"

zend_loader.enable=Off

  如果是 Win32 平台的话就应该是:

zend_optimizer.optimization_level=15

zend_extension_ts="C:\\path\\to\\ZendOptimizer.dll"

zend_loader.enable=Off

  啊!没有搞错吧?怎么是三行?其实第三行是可选的。因为看起来把 zend_loader 关掉能提高一点速度,因此值得把这第三行放到 php.ini 。需要注意的是,关掉的前提条件是你没有在使用 Zend 加密程序。

  二、缓冲

  如果想要更进一步提升速度,我们就需要考虑采用缓冲技术了。有一些可选的解决方案,包括 Zend Cache (测试版本), APC, 以及 Afterburner Cache,另外还有 jpCache 等。

  以上这些都是属于缓冲模块,他们把第一次对 .php 文件请求产生的中间代码存储在 Web 服务器的内存中,然后对以后的请求返回“编译好”的版本。因为这样减少了磁盘读写,而且都在内存工作,所以这个过程能显著提升应用性能,

  现成的这类产品比较多,到底选择谁呢?

  Zend Cache 是一款不错的商业产品,在第一次加载那些很大的 PHP 页面后,你会明显感受到速度的提升,服务器会留出更多的资源。可惜这个产品是要花银子的,但是在有些情形下,你可不要吝啬这些银子。

  Afterburner Cache 是 Bware Technologies 的产品,目前还处于 Beta 版本,看起来似乎和 Zend Cashe 一样,但是它不能达到 Zend Cache 那样好的效果,也不能和 Zend 优化引擎一起工作,但是它是免费的,所以我采用了这个模块。

  APC (Alternative PHP Cache) 是 Community Connect 发布的又一个免费模块,看起来似乎可以用于生产环境了。

  三、Web 内容压缩

  对于日益拥挤的网络来说,节约带宽就像节约用水一样是十分值得提倡的。根据IETF 标准,大多数浏览器应该支持使用 gzip 压缩的内容。也就是说你可以把用 gzip 压缩的内容发送给浏览器,浏览器会透明的解压数据。

  mod_gzip 是 Remote Communications 公司推出的免费 Apache 模块,能把静态的Web 内容压缩后发送给浏览器。对于大多数静态网页来说,这个模块十分合适。尽管

  Remotecommunications 公司的人说这个模块支持所有那些 mod_php, mod_perl,mod 什么产生的动态内容,但是看起来还是不能工作,从 mod_gzip 的邮件列表来看,这个问题估计要到1.3.14.6f 才能解决。

  如果要压缩动态内容的话,我们可以采用class.gzip_encode.php,一个在脚本开始和结束时使用的 PHP 类。对整个网站来说就是在 php.ini 的 auto_prepend 和 auto_append 中调用其中的函数。详细你可以阅读这个类的程序,这个程序注释得很好,作者几乎把什么都告诉你了。不过使用之前,你的 PHP 要编译为支持 zlib。

  对于 PHP 4.0.4 来说,一个新的解决方案就是使用 ob_gzhandler,能达到和上面的类一样的效果,只要简单的在 php.ini 加入下面这句话就可以了:

output_handler = ob_gzhandler ;

  这能让 PHP 激活输出缓冲,并压缩所有输出。如果有什么特殊的理由不想让所有的内容都压缩输出的话,可以采用在 .htaccess 文件中加入下面的行,对对应目录下的文件进行压缩。

php_value output_handler ob_gzhandler

  也可以直接在 PHP 代码中加入:

ob_start("ob_gzhandler");

  这项压缩技术十分有效,但是对 Netscape Communicator 用户来说,因为不能压缩图形文件,所以看上去没有完整的发送,因此必须关闭对 jpeg 和 gif 文件的压缩,IE 没有这个问题。

  结论:

  采用本文所讨论的技术应该能改善你的网站性能,但是需要注意的是:

  - PHP 可能不是导致瓶颈的原因,仔细检查其他原因(例如:数据库)

  - 你不可能把服务器性能调节到最高状态。因此在埋怨 PHP 及其缓冲之前,考虑是否该升级服务器了,或者采用动态负载平衡技术(那可是一大笔银子哦)。

  - 不要低估内容压缩,在你 100 Mb 的内部网上面看到 PHP 应用的速度提升时,不要忘记使用调制解调器的用户在哪里埋怨你的 100Kb 的 HTML 页面。

\r\n

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
http://www.chedong.com/tech/apache_install.html

\r\n

关键词: apache install php resin mod_gzip mod_expire webalizer cronolog

\r\n

内容摘要:

\r\n

Apache是一个历史悠久并且功能十分强大的WEB服务器,但其丰富的功能对于一个新手来说往往不知道从何下手。我个人感觉Apache的设计充分体现了模块化设计的优势,通过在动态模块加载(DSO)模式下的安装,任何子应用模块都可以通过配置文件的简单修改进行积木式的灵活配置。安装的过程可以从简单的静态html服务开始,一个模块一个模块的学习使用。从单纯的HTML静态服务(core),到复杂的动态页面服务(core + php, core + resin, core + php + mod_gzip, core + resin + mod_expire)。

\r\n

本文主要从简化安装==>性能调优==>维护方便的角度,介绍了WEB服务的规划、HTTPD安装/应用模块配置、升级/维护等过程。让Apache和PHP,Resin等应用模块的独立升级,完全互不影响。

\r\n
    \r\n
  1. WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式; \r\n
  2. Apache安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置;
    修改 HARD_SERVER_LIMIT:
    vi /path/to/apache_src/src/include/httpd.h
    #define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个“0”
    apache编译:
    ./configure –prefix=/home/apache –enable-shared=max –enable-module=most \r\n
  3. 可选应用模块/工具的安装:php resin mod_gzip mod_expire及各个模块之间的配合;
    mod_php安装:./configure –with-apxs=/home/apache/bin/apxs –enable-track-vars –with-mysql
    mod_resin安装:./configure –with-apxs=/home/apache/bin/apxs
    mod_gzip安装:修改Makefile中的 apxs路径:然后make make install
    工具:日志轮循工具cronolog安装:http://www.cronolog.org \r\n
  4. 升级/维护:看看通用和模块化的安装过程如何简化了日常的升级/维护工作;
    按照以上的方法:系统管理员和应用管理员的职责可以清楚的分开,互相独立。
    系统安装:系统管理员的职责就是安装好一台DSO模式的Apache,然后COLON即可,
    应用安装:由应用管理员负责具体应用所需要的模块,比如PHP Resin等,并设置httpd.conf中相关的配置。
    系统升级:系统管理员:升级操作系统/升级Apache
    应用升级:应用管理员:升级应用模块,PHP Resin等。
\r\n

WEB应用的容量规划

\r\n

Apache主要是一个内存消耗型的服务应用,我个人总结的经验公式:
apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5

\r\n

为什么会有一个apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低负载下系统可以使用更多的内存用于文件系统的缓存,从而进一步提高单个请求的响应速度。在高负载下,系统的单个请求响应速度会慢不少,而超过 apache_max_process,系统会因为开始使用硬盘做虚拟内存交换空间而导致系统效率急剧下降。此外,同样的服务:2G内存的机器的 apache_max_process一般只设置到1G内存的1.7倍,因为Apache本身会因为进程过多导致性能下降。

\r\n

例子1:
一个apache + mod_php的服务器:一个apache进程一般需要4M内存
因此在一个1G内存的机器上:apache_max_process_with_good_perfermance < (1g / 4m) * 2 = 500
apache_max_process = 500 * 1.5 = 750
所以规划你的应用让服务尽量跑在500个进程以下以保持比较高的效率,并设置Apache的软上限在800个。

\r\n

例子2:
一个apache + mod_resin的服务器: 一个apache进程一般需要2M内存
在一个2G内存的机器上:
apache_max_process_with_good_perfermance < (2g / 2m ) * 2 = 2000
apache_max_process = 2000 * 1.5 = 3000

\r\n

以上估算都是按小文件服务估算的(一个请求一般大小在20k以下)。对于文件下载类型站点,可能还会受其他因素:比如带宽等的影响。

\r\n

Apache安装过程

\r\n

服务器个数的硬上限HARD_SERVER_LIMIT的修改:
在Apache的源代码中缺省的最大进程数是256个,需要修改apache_1.3.xx/src/include/httpd.h
#ifndef HARD_SERVER_LIMIT
#ifdef WIN32
#define HARD_SERVER_LIMIT 1024
#elif defined(NETWARE)
#define HARD_SERVER_LIMIT 2048
#else
#define HARD_SERVER_LIMIT 2560 <===将原来的HARD_SERVER_LIMIT 256 后面加个“0”
#endif
#endif

\r\n

解释:
Apache缺省的最大用户数是256个:这个配置对于服务器内存还是256M左右的时代是一个非常好的缺省设置,但随着内存成本的急剧下降,现在大型站点的服务器内存配置一般比当时要高一个数量级不止。所以256个进程的硬限制对于一台1G内存的机器来说是太浪费了,而且Apache的软上限 max_client是受限于HARD_SERVER_LIMIT的,因此如果WEB服务器内存大于256M,都应该调高Apache的 HARD_SERVER_LIMIT。根据个人的经验:2560已经可以满足大部分小于2G内存的服务器的容量规划了(Apache的软上限的规划请看后面)。

\r\n

Apache的编译:以下通用的编译选项能满足以后任意模块的安装
./configure –prefix=/another_driver/apache/ –enable-shared=max –enable-module=most
比如:
./configure –prefix=/home/apache/ –enable-shared=max –enable-module=most

\r\n

解释:
–prefix=/another_driver/apache/:建议将apache服务安装在另外一个驱动设备上的目的在于硬盘往往是一个系统使用寿命最低的设备,因此:将服务数据和系统完全分开,不仅能提高了数据的访问速度,更重要的,大大方便系统升级,应用备份和恢复过程。

\r\n

–shared-module=max:使用动态加载方式载入子模块会带来5%的性能下降,但和带来的配置方便相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化等

\r\n

–enable-module=most:用most可以将一些不常用的module编译进来,比如后面讲到的mod_expire是就不在 apache的缺省常用模块中

\r\n

如果不想build so, 也可以这样:
./configure \\
\”–with-layout=Apache\” \\
\”–prefix=/path/to/apache\” \\
\”–disable-module=access\” \\
\”–disable-module=actions\” \\
\”–disable-module=autoindex\” \\
\”–disable-module=env\” \\
\”–disable-module=imap\” \\
\”–disable-module=negotiation\” \\
\”–disable-module=setenvif\” \\
\”–disable-module=status\” \\
\”–disable-module=userdir\” \\
\”–disable-module=cgi\” \\
\”–disable-module=include\” \\
\”–disable-module=auth\” \\
\”–disable-module=asis\”

\r\n

但结果会发现,这样编译对服务性能只能有微小的提高(5%左右),但却失去了以后系统升级和模块升级的灵活性,无论是模块还是Apache本身升级都必须把Apache和PHP的SOURCE加在一起重新编译。

\r\n

apache的缺省配置文件一般比较大:可以使用去掉注释的方法精简一下:然后再进入具体的培植过程能让你更快的定制出你所需要的。
grep -v \”#\” httpd.conf.default >httpd.conf

\r\n

需要修改的通用项目有以下几个:

\r\n

#服务端口,缺省是8080,建议将整个Apache配置调整好后再将服务端口改到正式服务的端口
Port 8080 => 80

\r\n

#服务器名:缺省没有
ServerName name.example.com

#最大服务进程数:根据服务容量预测设置
MaxClients 256 => 800

\r\n

#缺省启动服务后的服务进程数:等服务比较平稳后,按平均负载下的httpd个数设置就可以
StartServers 5 => 200

\r\n

不要修改:
以前有建议说修改:
MinSpareServers 5 => 100
MaxSpareServers 10 => 200

\r\n

但从我的经验看来:缺省值已经是非常优化的了,而且让Apache自己调整子共享进程个数还是比较好的。

\r\n

特别修改:
在solaris或一些比较容易出现内存泄露的应用上:
MaxRequestsPerChild 0 =>3000

\r\n

应用模块和工具的安装配置:

\r\n

由于使用模块动态加载的模式,所以可以方便的通过简单的配置调整来把Apache定制成你需要的:最好把不常用模块全部清除(无论处于安全还是效率)。
比如:对于静态页面服务器:就什么其他子模块都不加载,对于PHP应用就加上PHP模块,对于JAVA应用就把Resin模块加载上。而且各种模块的插拔非常简单,这样调试过程中就可以简单的通过注释掉不需要的模块,而不用重新编译。

\r\n

一般说来,可以不需要的模块包括:
#LoadModule env_module libexec/mod_env.so
#LoadModule negotiation_module libexec/mod_negotiation.so
#LoadModule status_module libexec/mod_status.so
#server side include已经过时了
#LoadModule includes_module libexec/mod_include.so
#不需要将没有缺省index文件的目录下所有文件列出
#LoadModule autoindex_module libexec/mod_autoindex.so
#尽量不使用CGI:一直是Apache安全问题最多的地方
#LoadModule cgi_module libexec/mod_cgi.so
#LoadModule asis_module libexec/mod_asis.so
#LoadModule imap_module libexec/mod_imap.so
#LoadModule action_module libexec/mod_actions.so
#不使用安全认证可以大大提高访问速度
#LoadModule access_module libexec/mod_access.so
#LoadModule auth_module libexec/mod_auth.so
#LoadModule setenvif_module libexec/mod_setenvif.so

\r\n

最好保留的有:
#用于定制log格式
LoadModule config_log_module libexec/mod_log_config.so
#用于增加文件应用的关联
LoadModule mime_module libexec/mod_mime.so
#用于缺省index文件:index.php等
LoadModule dir_module libexec/mod_dir.so

\r\n

可用可不用的有:
#比如:需要在~/username/下调试php可以将
LoadModule userdir_module libexec/mod_userdir.so
#比如:需要将以前的URL进行转向或者需要使用CGI script-alias
LoadModule alias_module libexec/mod_alias.so

\r\n

常用的模块:
最常用的可能就是php和JAVA应用服务器的前端,此外,从性能上讲利用mod_gzip可以减少40%左右的流量,减少机器用于传输的负载,而 mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。

\r\n

建议将所有MODULE的配置都放到相应模块的配置内部:<IfModule some_module.c>some_module config </IfModule>

\r\n

PHP的安装:
/path/to/php_src/configure –with-apxs=/path/to/apache/bin/apxs –with-other-modules-you-need
需要修改的配置:
AddType application/x-httpd-php .php .php3 .any_file_in_php

\r\n

resin的安装设置:
/path/to/resin/src/configure –with-apxs=/path/to/apache/bin/apxs

具体的resin设置放在另外一个文件中:比如/home/resin/conf/resin.conf
<IfModule mod_caucho.c>
CauchoConfigFile /path/to/apache/conf/resin.conf
</IfModule>

\r\n

mod_expires的安装配置:
<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresByType image/gif \”access plus 1 month\”
    ExpiresByType text/css \”now plus 1 month\”
    ExpiresDefault \”now plus 1 day\”
</IfModule>

\r\n

注释:
所有的.gif文件1个月以后过期
所有的文件缺省1天以后过期

\r\n

mod_gzip的安装
http://www.chedong.com/tech/compress.html

日志的轮循:cronolog的安装和设置
\r\n

cronolog可以非常整齐的将日志按天轮循存储
缺省编译安装到/usr/local/bin/下,只需要将配置改成:

\r\n

CustomLog \”|/usr/local/sbin/cronolog /home/apache/logs/%w/access_log\” combined

日志将按天截断并存放在以星期为目录名的目录下:比如:log/1是周一,log/5是周五, log/0是周日

用gzip压缩每天的日志:
30 4 * * * /usr/bin/gzip -f /home/apache/logs/`date -d yesterday +%w`/access_log

日志的定期删除:
30 5 * * */usr/bin/find /home/apache/logs/ -name access_log.gz -mtime +3 |xargs -r /bin/rm -f
\r\n

升级维护

\r\n

由于使用动态模块加载方式(DSO模式)安装Apache,Apache的HTTPD核心服务和应用模块以及应用模块之间都变的非常灵活,建议将所有独立模块的配置都放在
<IfModule mod_name>
CONFIGURATIONS..
</IfModule>
里,这样配置非常容易通过屏蔽某个模块来进行功能调整:比如:
#AddModule mod_gzip.c
就屏蔽了mod_gzip,而其他模块不首任何影响。

\r\n

安装和维护过程:

\r\n
    \r\n
  • 系统安装:系统管理员的职责就是安装系统和一个按照DSO模式安装的Apache,然后COLON。 \r\n
  • 应用安装:由应用管理员负责具体应用所需要的模块并设置HTTPD。 \r\n
  • 系统升级:系统管理员:升级系统/升级Apache \r\n
  • 应用升级:应用管理员:升级应用模块:PHP CAUCHO等 \r\n
  • 系统备份/恢复:如果Apache不在缺省的系统盘上,只需要将Apache目录备份就可以了,遇到系统分区的硬件问题直接使用预先准备好的系统COLON,再直接将Apache所在物理盘恢复就行了。
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
系统管理员:Apache的最简化安装OS + Apache (httpd core only)
应用管理员:应用模块定制纯静态页面服务
core
PHP动态页面
core+so
+php
JAVA应用
core+so
+caucho
+ssl
应用例子:www.example.com
image.example.com
bbs.example.commall.example.com
\r\n


\r\n

例子:Apache和PHP模块的独立升级。

\r\n

如果Apache是按照以下方式安装:
./configure –prefix=/home/apache –enable-shared=max –enable-module=most
PHP是按照以下方式安装:
./configure –with-apxs=/home/apache/bin/apxs –enable-track-vars –with-mysql

以后单独升级Apache的时候,仍然是:
./configure –prefix=/home/apache –enable-shared=max –enable-module=most
make
su
#/home/apache/bin/apachectl stop
#make install

单独升级php时,仍然是:
./configure –with-apxs=/home/apache/bin/apxs –enable-track-vars –with-mysql
make
su
#/home/apache/bin/apachectl stop
#make install
#/home/apache/bin/apachectl start

\r\n

基于反相代理的WEB加速:
squid和mod_proxy都可以实现反相代理加速。而基于缓存的代理加速比起原有WEB服务,速度会有数量级的提升。

\r\n

小提示:

\r\n

Apache安装后,缺省根目录下没有但很有用的2个文件:

\r\n
    \r\n
  • favicon.ico: favicon.ico是一个16×16的站点图标文件,如果浏览器发现有这个文件,在地址栏中会用这个图标替换调浏览器的网页图标。IE6和 MOZILLA等主流浏览器都支持这个功能。
    例如: http://www.chedong.com/favicon.ico
    \r\n
  • robots.txt: 用于告诉搜索引擎的爬虫程序(spider)网站那些页面可以被索引,那些不可以。
    具体说明请参考:http://www.robotstxt.org/wc/robots.html
\r\n

参考文档:

\r\n

Apache项目
http://httpd.apache.org

\r\n

PHP
http://www.php.net

\r\n

Resin
http://www.caucho.com

\r\n

mod_gzip
http://sourceforge.net/projects/mod-gzip/

\r\n

Cronolog
http://www.cronolog.org

\r\n

mod_expires
http://httpd.apache.org/docs/mod/mod_expires.html

\r\n

面向搜索引擎的CMS设计:
http://www.chedong.com/tech/cms.html

看厕所的老头怎么逼死移动老总的

今天早上,移动一官员猪古力在外突然感觉内急,只好找公共厕所。

  "干什么的?"大爷喊。

  "我是移动老总,我内急。"猪古力。

  "你不知道现在什么都要收费啊?"大爷。

  "行,多少钱?"猪古力。

  "进去5毛,出来3毛。"大爷看着他。

  "什么出来也要收费?"猪古力瞪着眼睛。

  "看什么看,我们这里实行双向收费。如果你办个厕所套餐的话,就可以单向收费了。

  "大爷站起来。

  "行,我付钱。"猪古力掏出十块钱。

  "大便还是小便?"大爷捏住钱问。

  "大便,快点。"

  "恩,你需要办理套餐吗?如果你一次性大便五十次,可以给你优惠再大便三十次。"大 爷说。

  "别说了,我先进去,马上出来付钱。"老总进去后,选择了最后一个坑位爽了好久后 出来了。

  "先生,您选择的是五号坑位,得付选号费用5毛钱,你在里面呆的时候没有说不要选 择放音乐,所以每次收费6毛钱。另外你在里面蹲了十五分零一秒,前一分钟按5毛每分, 后面按每分钟四毛计费。不足一分钟按一分钟计费。另外由于你的排泄量占用 了我们的下水道带宽,所以请你另外按包月付出费用50园。最后你可以通过小孔看到进厕所的其他人,请付来人显示费1块钱。"猪古力先生已经呆在那里。

  "所以,老总先生,我们这里不刷卡,总共你要付59.4毛钱,如果逾期不交纳,按每日

  千分之三的费用计滞纳金,我方不另行通知,到积累到千元我方将通过法律手段催缴。

  "大爷刚刚说完,猪古力先生扑通一声晕倒在小便池里
关键词:手机、乱收费

作者:木蚂蚁社区 来源于:www.mumayi.net

根据研究,Google能抓取的页面文件的极限是101Kb,超过这个极限的内容,google不再读取。比如:sina的首页文件大小是236Kb,而google能抓取的只有101KB,也就是说,sina首页的50%以上的内容是不为google抓取的。(可怜的sina,在google的眼里连版权都没有:)此外,有某些blog站点上有大量的评论,如果该页面的大小已经超过了101KB,你发再多的评论也是没有任何用处的。
启示:(1)建站时,任何一个页面文件的大小不要超过101KB,如果超过,请不要把重要的内容放在文件的尾部;(2)与大型门户网站(尤其是新浪)做文字链接、图片链接的,千万不要购买中下的位置,要尽可能的靠上。(3)做blog评论时,首先要看该页面的文件大小,如果远远小于101KB,就算页面的链接超过了100个也是无关紧要的;但如果已经超过101KB,那么还是放弃的好,免得做无用功。

以前经常看到下面的 Optimization Pass 9 为 disabled 原来还有这样的设置
Zend Optimizer
Optimization Pass 1 enabled
Optimization Pass 2 enabled
Optimization Pass 3 enabled
Optimization Pass 4 enabled
Optimization Pass 9 disabled
Zend Loader enabled

Zend Optimizer是由PHP核心引擎“Zend”创建者Zend技术公司所开的免费PHP优化软件。据Zend公司
透露使用这个软件某些情况下至少可以提高性能30%以上!这么好的免费大餐当然要用,现在我们来
谈谈如何配置这套软件。

Zend Opt的安装是傻瓜化的,安装向导会自动根据你的选择来修改php.ini帮助你启动这个引擎。下面
我们来介绍下Zend Opt的配置选项,帮助你最大化自定义合理的配置。下边是我所用的配置文件,看不
懂也不要着急,看完本文你就会完全明白。

[Zend]
zend_optimizer.optimization_level=1023
zend_optimizer.encoder_loader=0
zend_extension_ts="C:\Program Files\Zend\lib\ZendOptimizer.dll"

现在我们来介绍下上边这个配置文件的含义:
zend_optimizer.optimization_level 《== 优化程度,这里定义启动多少个优化过程。
zend_optimizer.encoder_loader 《== 是否允许处理由Zend Encoder加密的PHP文件。
zend_extension_ts 《== 优化器所在目录。

优化过程 zend_optimizer.optimization_level 详细解释

这里最为重点的部分,仔细看!Zend Opt总共有10个优化过程,从理论上说开的越多性能越好。当然,
理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大,Zend Opt的10个优化过
程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15,这里15指的是开启1-4号
优化过程。当然,很多朋友并不满足于此,毕竟最高也只开启4个优化过程连总数的一半都没有。各个优
化过程的对应的数字代码(值)如下:

不使用 0 <= 如果这样不如不装,还能节约点内存说!
优化过程1(PASS1) 1
优化过程2(PASS2) 2
优化过程3(PASS3) 4
优化过程4(PASS4) 8
优化过程5(PASS5) 16
优化过程6(PASS6) 32
优化过程7(PASS7) 64
优化过程8(PASS8) 128
优化过程9(PASS9) 256
优化过程10(PASS10) 512

以何种方式开启优化过程是通过这些数字代码(值)相加所得的和作为此参数的参数值来控制的。如我
的配置文件中zend_optimizer.optimization_level = 1023 , 这里的1023是优化过程1到优化过程10全
部数字代码(值)相加得到的和,表示开启全部10个优化过程。刚才所提到的Zend公司定义的High模式值
为15,15表示同时开启优化过程1-4。

加密代码支持 zend_optimizer.encoder_loader 详细解释

对于这个参数,我想如果没有看过Zend Opt FAQ文档的朋友大多数并不知道。这个参数用来告诉Zend Opt
是否去支持被Zend Encoder加密过的代码。默认情况下Zend Opt将支持加密过的代码。如果不使用被加密
过的代码我推荐你关闭此选项。这个功能牵扯到解包反码的过程,会导致系统负荷的加重。我的朋友已经
开发完毕相应的反编译工具,预计春节之后推出。

这个参数的值只有两个 0 关闭, 1 开启。默认为1,推荐设置为0。

模块定位 zend_extension_ts 无需解释

这是最简单的地方,参数就是Zend Opt模块在硬盘上的安装路径。

作者:王猛 来源:CSDN