注本网转载某位大侠的 具体的给忘 了 贴出来共享下
一、eAccelerator 介绍
我们知道,php 是属于解释开型语言,他们编写的动态内容都需要解释器来运行,解释器会把代码进行语法分析,然后生成可直接运行的中间代码,这个 中间代码被称为opcode (operate code ), 每一段php 代码在运行的时候都有一个转换为opcode 的过程,如果一段代码要运行多次的话,opcode 也会生成多次
eAccelerator 是一个免费开源的PHP 加速的软件, 其原理是通过缓存PHP 代码编译后的opcode 到共享内存中,并在用户访问的时候直接调来提高PHP 脚本的运行效 率,来起到高效的加速作用,对于不能缓存到共享内存中的文件和代码,eAccelerator 还可以把他们缓存到系统磁盘上
通过使用eAccelerator ,可以优化你的PHP 代码执行速度,降低服务器负载。
更多了解看 这里
二、eAccelerator 安装
1 、安装 可以直接看 这里
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
tar jxvf /root/tools/eaccelerator-0.9.6.tar.bz2
cd eaccelerator-0.9.6/
export PHP_PREFIX="/usr/local/php"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make&&make install
本人强列推荐把要用的软件打包成rpm 易管理,使用方便。
关于如何创建eaccelerator 的RPM 包,请 参考这里
三、eAccelerator 配置
一、eAccelerator 提供了两种配置和调用方式,分别为安装为
1 、 Zend extension 模式
用语句zend_extension= 后面跟加eaccelerator.so 的绝对路径,比如
zend_extension = /usr/local/php/lib/modules/eaccelerator.so
2 、安装为 PHP extension 模式,
则用语句 extension=”eaccelerator.so” 就可以 其它的配置一样
二、php 调用到eaccelerator.so 的方法也可以有两种
方法一,直接在php.ini 文件的任意位置里面添加和下面eaccelerator.ini 一样的语句
方法二:编绎php 时如果加了 –with-config-file-scan-dir=/etc/php.d (或其它目录)则 直接可以用vi eaccelerator.ini 。然后放入相应目录,其内容如下:
; Enable eAccelerator extension module
zend_extension = /usr/local/php/lib/modules/eaccelerator.so
; Options for the eAccelerator module
eaccelerator.shm_size = 0
eaccelerator.enable = 1
eaccelerator.optimizer = 1
eaccelerator.check_mtime = 1
eaccelerator.filter = ""
eaccelerator.shm_max = 0
eaccelerator.shm_ttl = 3600
eaccelerator.shm_prune_period = 0
eaccelerator.shm_only = 0
eaccelerator.compress = 1
eaccelerator.compress_level = 9
eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
eaccelerator.debug = 9
eaccelerator.allowed_admin_path=/usr/local/apache2/htdocs/eaccelerator/
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.log_file = "/tmp/eaccelerator.log"
更多详细及语句解释可以直接看 这里
三、完成安装配置后,我们最后要创建缓存目录
mkdir /tmp/eaccelerator
chmod 777 /tmp/eaccelerator
四、确认eaccelerator 已配置成功
如果你的机器上有php 命令,则直接用php -v 就会看到
PHP 5.2.13 (cli) (built: Apr 21 2010 22:38:51)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
with eAccelerator v0.9.6, Copyright (c) 2004-2010 eAccelerator, by eAccelerator
如果没有php 命令,则可以在写一个info.php 的文件,内容为 ,在浏览器里打开你的info.php 文件,也会看到eAccelerator 相应的信息
以上两种办法都能帮你确认eAccelerator 已正确配置
四、安装eAccelerator control panel (control.php )
把解开的eAccelerator 的源码包里的control.php 文件复制到你的WEB 服务器中的一个目录下,使其它以通过http 访问,如本例中 http://10.20.0.199/eaccelerator/control.php 还记得在前面配置eaccelerator 时有一个选项,这个选项的作用就是充许你通过control.php 看到更多的相关信息和能控制eAccelerator 。 eaccelerator.allowed_admin_path
要打开control.php 文件,你需要输入默认的用户名”admin “ 和密码”eAccelerator ” 这个用户名和密码可以在control.php 文件里修改。
二、这个控制面板有两大主要功能
一:控制eAccelerator 的功能如禁用或者启用eaccelerator 的缓存和优化作用,删除缓存的内容等
二:是查看已经缓存过的文件
五、eAccelerator 配置后效果测试
在开始之前我要先明一个服务器的并发处理问题,一般我们量化服务器的处理能力时会用到一个词吞吐率(throughput ),单位是“reqs/s” 这个词还用于描述如网络通讯数据量等,但这里只用于描述服务器的并发。
还需要了解一下ab 的使用 如果之前不了解, 可以看这里 ····
这里重点关注ab 报告里requests per second : 如下:
.... 截去 .....
Document Path: /index.php
Document Length: 47459 bytes
Concurrency Level: 100
Time taken for tests: 43.394 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 476070979 bytes
HTML transferred: 474650695 bytes
Requests per second: 230.44 [#/sec] (mean)
Time per request: 433.945 [ms] (mean)
Time per request: 4.339 [ms] (mean, across all concurrent requests)
Transfer rate: 10713.65 [Kbytes/sec] received
.... 截去 .....
测试及取值方法,这里我们直接用index.php 脚本. 里面的内容为 ab 并发100 ,请求10000 次来取得服务器的吞吐。然后对不安装和安装eaccelerator 分别取下的服务器的吞吐的值进行对比。来确定 eaccelerator 加速效用
注意: 为了排除网络响应等其它的因素我建义ab 命令的测试就在本机运行
为了数据的有效性,建议多次运行ab 命令,然后取得一个比较平均的值
一、不安装eaccelerator 的测试数据
ab -c 100 -n 10000 http://10.20.0.199/index.php
Document Path: /index.php
Document Length: 39630 bytes
Concurrency Level: 100
Time taken for tests: 8.031 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 397744576 bytes
HTML transferred: 396324434 bytes
Requests per second: 1245.19 [#/sec] (mean)
Time per request: 80.309 [ms] (mean)
Time per request: 0.803 [ms] (mean, across all concurrent requests)
Transfer rate: 48366.09 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 2.0 0 20
Processing: 13 79 8.2 80 104
Waiting: 7 76 11.1 79 100
Total: 20 80 7.5 80 104
Percentage of the requests served within a certain time (ms)
二、安装eaccelerator 的测试数据
ab -c 100 -n 10000 http://10.20.0.199/index.php
Document Path: /index.php
Document Length: 42147 bytes
Concurrency Level: 100
Time taken for tests: 6.378 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 423038785 bytes
HTML transferred: 421618217 bytes
Requests per second: 1567.89 [#/sec] (mean)
Time per request: 63.780 [ms] (mean)
Time per request: 0.638 [ms] (mean, across all concurrent requests)
Transfer rate: 64773.36 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.6 0 8