最近想着如何优化一下php,找到了eAccelerator这个开源软件,一下引用一段官方说明介绍eAccelerator:
eAccelerator是一款php加速和优化软件,通过将编译后的php缓存起来来提高php的性能。通常能够降低服务器负载并加快php执行1-10倍(官方说法)。
注:只支持5.1以上的php版本
下面记录一下安装过程以及使用前后的效果对比。
1、下载安装
依赖的软件包:autoconf, automake, libtool, m4
wget https://codeload.github.com/eaccelerator/eaccelerator/legacy.tar.gz/master
tar jxvf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
然后,执行
/usr/local/php5.3.28/bin/phpize (此步骤为生成configure文件。具体路径修改下就ok。phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块,官方说明网址为:http://php.net/manual/en/install.pecl.phpize.php)
若执行时遇到关于autoconf的报错,如下
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
此问题是因为没有安装m4和autoconf,yum安装即可
yum install m4
yum install autoconf
编译完成后,make & makeinstall
2、修改php配置文件,php添加eAccelerator有两种方式,一种是作为zend的扩展,一种作为php的扩展。先说作为php的扩展:
在php.ini的扩展配置部分(可在php.ini里搜索extension)添加如下内容
extension="eaccelerator.so"
eaccelerator.shm_size="16" #eAccelerator可用的最大内存,单位M
eaccelerator.cache_dir="/tmp/eaccelerator" #磁盘用来存储缓存的目录,eAccelerator在这里存储预编译代码、session数据、内容和用户条目。同样的内容也可以存储到内存中以便更快的读取。
eaccelerator.enable="1" #1允许 0禁止
eaccelerator.optimizer="1" #意识是是否允许内部优化器,1允许 0禁止
eaccelerator.check_mtime="1" #是否允许检查php文件是否更改,如果你想重新编译php文件在他们修改后,则这里应该设置为“1”
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0" #从内存中清除缓存的周期,0为不清除
eaccelerator.shm_only="0" #是否允许在磁盘缓存编译过的文件。这不会影响到session数据和内容的缓存。0表示同时启用磁盘和内存缓存
配置完成后,重启apache。打开几个页面之后,观察指定的目录里有没有文件产生。如果想获得更多地信息,可以拷贝control.php至到网站目录下并且在php.ini文件中添加
eaccelerator.allowed_admin_path “control.php路径”
同时还可以设置访问control.php的用户名和密码,在control.php文件里设置即可。
效果:我们公司的网站访问量没那么大,优化后的效果不是很明显。但是进行压测的时候性能还是有一定的提升。