eAccelerator 配置(PHP代码加速器)

eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍;

首先您要安装好PHP,然后再来编译安装 eaccelerator,过程如下。

我们从官方下的版本是eaccelerator-0.9.5.2.tar.bz2  

编译安装;  

#tarxvfeaccelerator-0.9.5.2.tar.bz2  

#cdcdeaccelerator-0.9.5.2  

#exportPHP_PREFIX="/usr"  

#$PHP_PREFIX/bin/phpize  

#./configure\  --enable-eaccelerator=shared\  --with-php-config=$PHP_PREFIX/bin/php-config  

#make  

#makeinstall  

注:通过export来设置php所在的安装路径变量,我的PHP是安装在/usr目录下,系统用redhat。其它系统如果默认安装也大体差不多;如果不一样,就自己指定一下;  

完成安装后,eaccelerator.so模块位于/usr/lib/php/extensions目录中,您的系统如果和我不一样,您自己应该安装在哪了; #echo"/usr/lib/php/extensions">/etc/ld.so.conf  

#ldconfig  注:更新动态链接库地址;  

修改配置文件;  

我们首先要修改;php.ini,然后重启Apache;  

在php.ini文件中,加入;

zend_extension="/usr/lib/php/extensions/eaccelerator.so"注:模块的具体位置;  

eaccelerator.shm_size="16"注:共享内存大小;  

eaccelerator.cache_dir="/home/eaccelerator"注:缓存目录;  

eaccelerator.enable="1"  

eaccelerator.optimizer="1"  

eaccelerator.check_mtime="1"  

eaccelerator.debug="0"  

eaccelerator.filter=""  

eaccelerator.shm_max="0"  

eaccelerator.shm_ttl="0"  

eaccelerator.shm_prune_period="0"  

eaccelerator.shm_only="0"  

eaccelerator.compress="1"  

eaccelerator.compress_level="9"  注:其中,模块的具体位置必须正确,以您的系统为准;共享内存大小可以自己调整,感觉16M还是可以的,根据服务器的情况,你自己调一下。

缓存目录可以自己指定,我们在这里指定的是/home目录上的eaccelerator目录,如果没有,自己创建一个;权限是0777;

以上的配置是把eaccelerator做为Zend的扩展模块来编译的办法。如果您的PHP是用安装模式编译的,要把zend_extension改为zend_extension_ts。

如果您是把eaccelerator做为PHP的一个扩展,要用下面的配置;  

extension="eaccelerator.so"  

eaccelerator.shm_size="16"  

eaccelerator.cache_dir="/home/eaccelerator"  

eaccelerator.enable="1"  

eaccelerator.optimizer="1"  

eaccelerator.check_mtime="1"  

是不是生效了,您要查看/home/eaccelerator目录中,当Apache服务器启动了,你随便点几个页面,如果在这个目录中,出现文件了。那就是生效了。如果没任何文件,就要找原因了……  这两个配置文件,是不是管用。要你自己根据情况来修改。

#mkdir/home/eaccelerator

# chmod 777 /home/eaccelerator   注:创建缓存目录池,权限是777

eaccelerator.shm_size="32"

eAccelerator 可以使用的共享内存的数量 (以兆为单位) . "0" 是指操作系统的默认值. 默认值是 "0".可根据服务器的实际情况来调整,16,32,64,128都是可以的。

eaccelerator.cache_dir="/home/php/tmp"

这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 "/tmp/eaccelerator".

eaccelerator.enable="1"

开启或关闭 eAccelerator。"1" 为开启,"0" 为关闭。默认值为 "1"。

eaccelerator.optimizer="1"

启或关闭内部优化器,可以提升代码执行速度。"1" 为开启,"0" 为关闭。默认值为 "1"。

eaccelerator.check_mtime="1"

打开或者关闭 PHP 的文件修改检查. "1" 是指打开, "0" 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 "1". 默认值是 "1".

eaccelerator.debug="0"

开启或关闭调试日志记录。"1" 为开启,"0" 为关闭。默认值为 "0"。会将缓存命中得记录写入日志。

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"

允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 "0",即:使用磁盘和共享内存进行缓存。

eaccelerator.compress="1"

允许或禁止压缩内容缓存。默认值为 "1",即:允许压缩。

eaccelerator.compress_level="9"

指定内容缓存的压缩等级。默认值为 "9",为最高等级。

eaccelerator.keys = "disk_only"

eaccelerator.session = "disk_only"

eaccelerator.content = "disk_only"

设置内容缓存的存放的地方,可以设置为:

shm_and_disk 在共享缓存和硬盘(默认值)

shm 默认存在共享内存,如果共享内存已满或大小超过 "eaccelerator.shm_max" 的值,就存到硬盘

shm_only 只存放在共享内存

disk_only 只存放在硬盘

none 不缓存数据

eaccelerator.allowed_admin_path = "/var/www/html/web/eaccelerator"

这是控制面板的地址

安装包里有个control.php,你把它复制到网站的任意目录,可以用它查看和管理,这个必须指定,否则查看缓存内容的时候会出错

最后,来看一下我的 eAccelerator 设置

; eaccelerator

[eaccelerator]

zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"

eaccelerator.shm_size="128"

eaccelerator.cache_dir="/tmp/eaccelerator"

eaccelerator.enable="1"

eaccelerator.optimizer="1"

eaccelerator.check_mtime="1"

eaccelerator.debug="0"

eaccelerator.filter=""

eaccelerator.shm_max="0"

eaccelerator.shm_ttl="3600"

eaccelerator.shm_prune_period="3600"

eaccelerator.shm_only="0"

eaccelerator.compress="1"

eaccelerator.compress_level="9"

eaccelerator.keys = "disk_only"

eaccelerator.sessions = "disk_only"

eaccelerator.content = "disk_only"

eaccelerator.allowed_admin_path = "/var/www/html/web/eaccelerator"

另外,再说下 eAccelerator 的安装

# wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2

# tar -jxvf eaccelerator-0.9.6.tar.bz2

# cd eaccelerator-0.9.6

# /usr/local/php/bin/phpize

# ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/php/bin/php-config

# make && make install

-------------------------------------

open_basedir 设置后不能访问的解决方法之一

Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (.:/tmp/) in Unknown on line 0

Fatal error: Can’t load /XX/index.php, open_basedir restriction. in Unknown on line 0

出现了很多次这样的问题了,感觉都无从下手,总觉得与系统和php有关, 今天又出现了, 想来想去都觉得不奇怪, 后面开始重新编译php, php的扩展都没编译,发现设置open_basedir的时候,却没有出错^^^   ,   从这个信息觉得有些可以利用的,把自己方案所需的扩展都安装进去,重启apache的时候,却发现有出现这个错误, 把php.ini中设置的扩展一个一个的关闭,开始排查,后面吧eaccelerator注释掉后,重启apache并没有出现错误, 定位问题出现eaccelerator, 在用google查了下,发现eaccelerator 0.9.6后的版本跟以前的有些改变,把open_basedir给限制了,这时我们要把限制去掉才行

下载eaccelerator 0.9.6后先不要安装,解包后找到eaccelerator.c这个文件,打开第1156行,这样的:

if(PG(open_basedir)&&php_check_open_basedir(realnameTSRMLS_CC)){

修改成:

if (PG(open_basedir) && php_check_open_basedir(file_handle->filename TSRMLS_CC)) {

修改后在进行编译,就ok了

相关推荐