首先,优化的目的是花最少的代价换来最快的运行速度与最容易维护的代码。
Apache中如使用mod_php方式运行PHP,请求、响应执行流程:
1、Apache接收请求
2、Apache传递请求给mod_php
3、mod_php定位磁盘文件,并加载到内存中
4、mod_php编译源代码成为opcode树
5、mod_php执行opcode树
因为PHP是解释型的语言,所以每个PHP文件在运行的时候都需要编译后再执行,不同的线程访问同一个文件,每次都需要重新编译然后运行,这样就耗费了大量时间。所以,通过把编译后文件缓存起来,就减少了许多时间消耗。所以我们要做的就是在第4个步骤进行优化。
安装配置eAccelerator
wget http://jaist.dl.sourceforge.net/sourceforge/eaccelerator/eaccelerator-0.9.5.tar.bz2 tar -xvf eaccelerator-0.9.5.tar.bz2 cd eaccelerator-0.9.5 /usr/local/web/php/bin/phpize ./configure –enable-eaccelerator=shared –with-php-config=/usr/local/web/php/bin/php-config make make install mv /usr/local/web/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so /usr/local/web/php/lib/php/extensions/PECL #将下面代码加入php.ini文件中 extension = eaccelerator.so ; eAccelerator eaccelerator.shm_size = "16" eaccelerator.cache_dir = "/data/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.prune_period = "0" eaccelerator.shm_only = "0" eaccelerator.compress = "1" eaccelerator.compress_level = "9" #创建缓存目录,重启apache mkdir /data/eaccelerator chmod 777 /data/eaccelerator /usr/local/web/apache/bin/apachectl restart
最后在phpinfo()检查,是否安装成功
事实上,可以考虑把编译后的文件放到内存里,这样,每个线程访问时机器指令直接从内存中取结果,而不是从硬盘中读取,会更快。