Sun 6 Nov 2005
eAccelerator 是在 mmcache PHP 加速器/编码器的基础上更新开发的产品。它利用预先编译的缓存来提高PHP脚本的表现, 这样几乎可以完全避免超负荷编译带来的系统性能降低。 eAccelerator 的加速效果是非常明显的。昨天在一台繁忙的论坛服务器(使用vbb 2.x)测试了,速度有明显的提升,系统负荷大幅度降低。eAccelerator在Debian下安装很简单:
apt-get install gcc cpp php4-dev
wget http://ovh.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.3.tar.gz
tar zxf eaccelerator-0.9.3.tar.gz
cd eaccelerator-0.9.3
export PHP_PREFIX="/usr"
$PHP_PREFIX/bin/phpize
./configure –enable-eaccelerator=shared –with-php-config=$PHP_PREFIX/bin/php-config
make
make install
mkdir /var/cache/eAcache
chmod 777 /var/cache/eAcache
然后设置 php.ini,我用的是Apache 2,php.ini是在 /etc/php4/apache2/php.ini ,在文件的最后加入如下设置:
;eAccelerator
extension="eaccelerator.so"
eaccelerator.shm_size = "1024"
eaccelerator.cache_dir = "/var/cache/eAcache"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.debug = "0"
eaccelerator.check_mtime = "1"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "7200"
eaccelerator.shm_only = "1"
eaccelerator.compress = "1"
eaccelerator.compress_level = "3"
eaccelerator.keys = "shm_only"
eaccelerator.sessions = "shm_only"
eaccelerator.content = "shm_only"
因为服务器的内存颇多,为了降低系统负荷,我是将缓存页面全部保存在共享内存区的。重启apache,将 eaccelerator.php 拷贝到web目录,访问它就可以确认是否成功启用了 eaccelerator。
在这里您可以找到设置 php.ini 的相关细节.
- ;extension="eaccelerator.so"
- zend_extension="/usr/lib/php4/eaccelerator.so"
- ;zend_extension_ts="/usr/lib/php4/eaccelerator.so"
- ;extension="eaccelerator.dll"
- ;zend_extension_ts="c:\php4\eaccelerator.dll"
- ;zend_extension="c:\php4\eaccelerator.dll"
您必须取消一条注释 (而且同时只能是一条被取消) 以便使用下面的描述来装载 eAccelerator 的扩展.
eAccelerator 兼容于 Zend Optimizer’s loader. Zend Optimizer 在 eAccelerator 的安装结束进行后必须在 php.ini 中配置. 如果您不使用用脚本来编码的 Zend Encoder ,那么我们不推荐您安装成 Zend Optimizer 加上 eAccelerator 这种模式.
- eaccelerator.shm_size = "64"
eAccelerator 可以使用的共享内存的数量 (以兆为单位) . "0" 是指操作系统的默认值. 默认值是 "0".
- eaccelerator.cache_dir = "/tmp/eaccelerator"
这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 "/tmp/eaccelerator".
- eaccelerator.enable = "1"
打开或者关闭 eAccelerator. "1" 是指打开, "0" 是指关闭. 默认值是 "1".
- eaccelerator.optimizer = "1"
打开或者关闭内置的 peephole optimizer,它可以提高代码的执行速度. "1" 是指打开, "0" 是指关闭. 默认值是 "1".
- eaccelerator.debug = "0"
打开或者关闭调试记录. "1" 是指打开, "0" 是指关闭. 默认值是 "0".
- eaccelerator.check_mtime = "1"
打开或者关闭 PHP 的文件修改检查. "1" 是指打开, "0" 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 "1". 默认值是 "1".
- eaccelerator.filter = ""
决定哪些 PHP 文件应该被缓存. 您可以指定一个范围 (比如 "*.php *.phtml"),这样被指定的文件就会被缓存或者被排出在外. 如果使用字符 "!" 来指定这个范围, 符合这个范围的文件就被排出在外. 默认值是 "" ,意思是说 - 所有的 PHP 脚本都会被缓存.
- eaccelerator.shm_max = "0"
利用 "eaccelerator_put()" 这个功能选项来关闭在共享内存中加载大量数据. 它指出最大的被允许的大小,以字节为单位 (10240, 10K, 1M). 使用 "0" 来关闭这个限制. 默认值是 "0".
- eaccelerator.shm_ttl = "0"
当 eAccelerator 尝试从共享内存中获得数据来创建新的脚本缓存但失败以后,它从共享内存中删除所有的至少在 "shm_ttl" 秒以前没有被访问的脚本。默认值是 "0" ,意思是说 - 不要从共享内存中删除任何文件.
- eaccelerator.shm_prune_period = "0"
当 eAccelerator 尝试从共享内存中获得数据来创建新的脚本缓存但失败以后,它尝试删除旧的脚本,前提是在这之前的这个尝试在超过 "shm_prune_period" 秒之前被执行. 默认值是 "0" ,意思是说 - 不要尝试从共享内存中删除任何文件.
- eaccelerator.shm_only = "0"
打开或者关闭在磁盘上缓存编译过的脚本. 这个参数对会话数据和内容缓存没有效果. 默认值是 "0" ,意思是说 - 使用磁盘和共享内存来缓存。
- eaccelerator.compress = "1"
打开或者关闭缓存后的内容压缩. 默认值是 "1" ,意思是说打开压缩.
- eaccelerator.compress_level = "9"
内容缓存后被压缩的程度. 默认值是 "9" ,意思是说使用最大程度的压缩率。
- eaccelerator.keys = "shm_and_disk"
- eaccelerator.sessions = "shm_and_disk"
- eaccelerator.content = "shm_and_disk"
决定哪些 keys, 会话数据和内容被缓存. 可能的值是:"shm_and_disk", 在共享内存中和磁盘上缓存数据 (默认值)
"shm", 在共享内存中或者磁盘上缓存数据,如果共享内存被使用的尺寸已经超过 "eaccelerator.shm_max" 所定义的范围。
"shm_only", 在共享内存中缓存数据
"disk_only", 在磁盘上缓存数据
"none", 不缓存任何数据
- eaccelerator.admin.name="yourusername"
- eaccelerator.admin.password="yourpassword"
您可以使用 eaccelerator.php 通过网页的页面来管理 eAccelerator. 您应该把这个文件放在您的网站上. 为了安全,推荐您不要通过您本地的IP地址来访问这个脚本。
创建 eAccelerator 的密码
php -q eaccelerator_password.php
改变网页页面方式访问 (eaccelerator.php)这个文件的访问密码Enter admin name: admin
New admin password: eaccelerator
Retype new admin password: eaccelerator
飞天的梦想 is proudly powered by
December 10th, 2005 at 3:45 pm
老大,写的不错。我支持一下。