不重新编译php安装配置eAccelerator
eAccelerator属于一个免费的开源php加速、优化、编译和动态缓存项目,原理和apc类似,都是通过缓存php编译后的opcode代码来提高php脚本的执行性能,而且eAccelerator本身的开销也是极少的。
注:目前最新的php5.5+还未推出适合的版本
本文已经更新到个人博客 http://ifxoxo.com/php_eaccelerator.html ,转载请留名.
一、安装eAccelerator
1、下载
eAccelerator可以到 https://github.com/eaccelerator/eaccelerator/tarball/master 下载最新版本。
目前下载到的最新版本是eaccelerator-42067ac.tar
如果打不开github,可以到我网盘去下载 http://pan.baidu.com/s/1pJ5IItt
2、安装
前提:找到php的安装目录, 楼主是安装在 /usr/local/php
下载完毕之后,就通过phpize安装扩展的方式,进行安装
tar zxvf eaccelerator - eaccelerator - 42067ac.tar cd eaccelerator - eaccelerator - 42067ac #进入目录 / usr / local / php / bin / phpize #执行php安装目录下的phpize . / configure -- enable - eaccelerator = shared -- with - php - config = / usr / local / php / bin / php - config #进行配置 make make install |
顺利的话,eAccelerator就安装完毕了,并且在你的扩展目录下,生成一个eaccelerator.so文件。接下来就是配置和启动了。
3、配置
找到php.ini的位置,然后进行编辑,添加以下信息
extension = eaccelerator . so eaccelerator . shm_size = "64" eaccelerator . cache_dir = "/data/logs/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" |
然后要创建cache_dir的目录
mkdir - p / data / logs / tmp / eaccelerator chmod 777 / data / logs / tmp / eaccelerator |
各个配置的意思:
shm_size
: 可使用的共享内存大小(单位为MB)cache_dir
: 缓存存放的路径enable
: 打开或者关闭eaccelerator。”1″指打开,”0″指关闭。默认值为”1″。optimizer
:打开或者关闭代码优化,开启可以加快代码的执行速度。”1″指打开,”0″指关闭。默认值为”1″。check_mtime
: 以文件的修改时间为依据,判断是不是要重新生成缓存。”1″指打开,”0″指关闭。默认值为”1″。当关闭此项时,如果php文件被修改,则需要手工删除eaccelerator缓存,才能显示被修改的php文件。debug
: 打开或者关闭调试记录。当打开时,eaccelerator会将对一个缓存文件的每次请求都写进log。默认为0filter
: 指定被缓存的后缀文件。默认值为””,表示缓存所有的PHP文件。shm_max
:用户使用例如eaccelerator_put之类的函数能够往共享内存中加载的最大数据。默认值为”0″,表示不限制。(单位为字节)shm_ttl
:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删除至少在shm_ttl秒之前没有被访问过的文件。默认值为”0″,表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)shm_prune_period
:当没有足够的空闲共享内存去尝试缓冲一个新脚本时,将删所有旧脚本,前提是这个尝试在超过shm_prune_period秒之前被执行过。默认值为”0″,表示不尝试从共享内存中删除任何旧的脚本。(单位为秒)shm_only
:打开或者关闭在磁盘上缓存编译过的脚本。这个参数对会话数据和内容缓存没有效果。默认值为”0″,表示使用磁盘和共享内存来缓存。compress
: 打开或者关闭缓存内容压缩。”1″指打开,”0″指关闭。默认值为”1″。compress_level
: 内存压缩的级别。默认值为”9″,表示最大压缩。
4、启动eaccelerator
如果是apache,重启apache如果是php-fpm,重启php-fpm进程。
启动之后,可以在cache_dir中看到类似这样的文件夹。
二、监控eaccelerator的运行情况
eaccelerator提供了监控运行情况的页面,但是得特殊配置。
(1)复制control.php
eAccelerator控制面板的地址,安装包里有一个control.php文件,把它复制到网站的指定目录。
(2)php.ini中增加allowed_admin_path
在刚才配置php.ini的地方,再增加一个选项,指向网站的根目录。
eaccelerator . allowed_admin_path = / data / www / |
(3)重启apache或者php-fpm
重启之后,访问你刚才的control.php,就可以看到这个页面了。需要登录,
- 用户名:admin,
- 密码:eAccelerator。
如果想修改密码,直接编辑control.php ,在前面几行进行修改。

ifxoxo.com
三、eaccelerator的加速效果
安装之后,写了一段排序代码,分别用了ab和webbench进行压力测试,看看加速效果如何。ab测试在正常的情况下的提速效果,webbench则测试在满负载下的提速效果。
1、ab测试正常测试
用 ab -n 10000 -c 500 进行测试
(1) 没启动eaccelerator

ifxoxo.com
关键指标
每秒事务数 : Requests per second: 2366.20 [#/sec] (mean)
平均事务响应时间 :Time per request: 211.309 [ms] (mean)
(2) 启动了eaccelerator
关键指标
每秒事务数 : Requests per second: 3274.80 [#/sec] (mean)
平均事务响应时间 :Time per request: 152.681 [ms] (mean)
(3) 结论
正常测试(不是最高负载)的情况下:
- 每秒事务数 提高了 38%
- 平均事务响应时间 缩短了 28%
2、用webbench测试最高负载
逐渐提高压力,直到达到最高负载的时候。命令为: webbench -c 1000 -t 10
(1) 没启动eaccelerator
关键指标speed=327078 pages/min
(2) 启动eaccelerator
关键指标speed=629718 pages/min
(3) 结论
在服务器满负载工作的情况下, 每分钟的页面处理数 提高了 92.5% ,真是一个令人吃惊的飞跃。
3、测试结论
- 在正常的情况下,启动eaccelerator,php提速了接近30%。
- 在满负载情况下,启动eaccelerator,php提速了惊人的90%。
当然,实际情况下,php不单单是排序,还有数据库连接、网络请求等的,提速效果可能没有这么好,但是,肯定也是有不错的效果的。
4、附带测试代码
<?php
$seed = rand ( 1 , 4 ) ;
$arr = array ( 1 , 43 , 54 , 62 , 21 , 66 , 32 , 78 , 36 , 76 , 39 ) ;
switch ( $seed ) {
case '1' :
$a = getpao ( $arr ) ;
case '2' :
$a = select_sort ( $arr ) ;
case '3' :
$a = insert_sort ( $arr ) ;
case '4' :
$a = quick_sort ( $arr ) ;
}
//冒泡排序
function getpao ( $arr ) {
$len = count ( $arr ) ;
for ( $i = 1 ; $i < $len ; $i ++ ) {
for ( $k = 0 ; $k < $len - $i ; $k ++ ) {
if ( $arr [ $k ] > $arr [ $k + 1 ] ) {
$tmp = $arr [ $k + 1 ] ;
$arr [ $k + 1 ] = $arr [ $k ] ;
$arr [ $k ] = $tmp ;
}
}
}
return $arr ;
}
//选择排序
function select_sort ( $arr ) {
for ( $i = 0 , $len = count ( $arr ) ; $i < $len - 1 ; $i ++ ) {
$p = $i ;
for ( $j = $i + 1 ; $j < $len ; $j ++ ) {
if ( $arr [ $p ] > $arr [ $j ] ) {
$p = $j ;
}
}
if ( $p != $i ) {
$tmp = $arr [ $p ] ;
$arr [ $p ] = $arr [ $i ] ;
$arr [ $i ] = $tmp ;
}
}
return $arr ;
}
//插入排序
function insert_sort ( $arr ) {
for ( $i = 1 , $len = count ( $arr ) ; $i < $len ; $i ++ ) {
$tmp = $arr [ $i ] ;
for ( $j = $i - 1 ; $j >= 0 ; $j -- ) {
if ( $tmp < $arr [ $j ] ) {
$arr [ $j + 1 ] = $arr [ $j ] ;
$arr [ $j ] = $tmp ;
} else {
break ;
}
}
}
return $arr ;
}
//快速排序
function quick_sort ( $arr ) {
$length = count ( $arr ) ;
if ( $length <= 1 ) {
return $arr ;
}
$base_num = $arr [ 0 ] ;
$left_array = array ( ) ; //小于标尺的
$right_array = array ( ) ; //大于标尺的
for ( $i = 1 ; $i < $length ; $i ++ ) {
if ( $base_num > $arr [ $i ] ) {
$left_array [ ] = $arr [ $i ] ;
} else {
$right_array [ ] = $arr [ $i ] ;
}
}
$left_array = quick_sort ( $left_array ) ;
$right_array = quick_sort ( $right_array ) ;
return array_merge ( $left_array , array ( $base_num ) , $right_array ) ;
}
?>
不重新编译php安装配置eAccelerator的更多相关文章
- Linux 下编译并安装配置 Qt 4.53全过程
最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发.考虑到程序的跨平台可移植性,最终选择使用 Qt 开发.相对来说,国内关于 Qt 相关文档并不算很多.作者将 Linux 下编译并安 ...
- Nutch2.3 编译和安装配置
Nutch2.3 编译和安装配置 [一].介绍 Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫.现在Nutch分为两个版本:1. ...
- TensorFlow Python3.7环境下的源码编译(二)安装配置
源代码树的根目录中包含了一个名为 configure 的 bash 脚本. $ ./configure 接下来,配置系统会给出各种询问,以确认编译时的配置参数. 一.重要参数解释 Please s ...
- TensorFlow Python2.7环境下的源码编译(二)安装配置
源代码树的根目录中包含了一个名为 configure 的 bash 脚本. $ ./configure 接下来,配置系统会给出各种询问,以确认编译时的配置参数. 一.重要参数解释 Do you w ...
- Ubuntu16桌面版编译和安装OpenCV4
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署
阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...
- ubuntu14.04下安装cudnn5.1.3,opencv3.0,编译caffe及配置matlab和python接口过程记录
已有条件: ubuntu14.04+cuda7.5+anaconda2(即python2.7)+matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照: ...
- [大牛翻译系列]Hadoop(20)附录A.10 压缩格式LZOP编译安装配置
附录A.10 LZOP LZOP是一种压缩解码器,在MapReduce中可以支持可分块的压缩.第5章中有一节介绍了如何应用LZOP.在这一节中,将介绍如何编译LZOP,在集群做相应配置. A.10.1 ...
- Linux 下编译、安装、配置 QT
转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...
随机推荐
- 精通Perl(第2版)
精通Perl(第2版)(通往Perl大师之路必读经典书籍,体现了一种编程思维,能够帮你解决很多实际的问题) [美]brian d foy(布瑞恩·D·福瓦)著 王兴宇 刘宸宇 译 ISBN 978 ...
- Android笔记——AsyncTask介绍
AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操 ...
- Android笔记——Application的作用
一.Application是什么 Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象, ...
- WCF学习之旅—WCF服务部署到应用程序(十)
上接 WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...
- 【WCF】授权策略详解
所谓授权者,就是服务授予客户端是否具有调用某个服务操作的权限. 授权过程可以通过一系列授权策略来进行评估,即每个特定的授权策略都按照各自的需求,衡量一下调用方是否具备访问服务操作的权限.在默认情况下, ...
- 在 CSS 预编译器之后:PostCSS
提到css预编译器(css preprocessor),你可能想到Sass.Less以及Stylus.而本文要介绍的PostCSS,正是一个这样的工具:css预编译器可以做到的事,它同样可以做到. “ ...
- IIS7禁用单个静态文件的缓存配置方法
IIS7中,想将一个经常修改的静态文件设置为不可缓存,在IIS配置界面里怎么也找不到... 一番google之后在stackoverflow里边发现了这样一段回答,最终解决了问题: just stum ...
- 初步认识Node 之Express
通过本文,你会对Express有一个较为具体的了解. 起源 2009年6月26日,TJ Holowaychuk提交了Express的第一次commit,接下来在2010年1月2日,有660次co ...
- HTML5 学习总结(三)——本地存储
一.HTML4客户端存储 B/S架构的应用大量的信息存储在服务器端,客户端通过请求响应的方式从服务器获得数据,这样集中存储也会给服务器带来相应的压力,有些数据可以直接存储在客户端,传统的Web技术中会 ...
- SQLServer学习笔记系列1
一.前言 一直自己没有学习做笔记的习惯,所以为了加强自己对知识的深入理解,决定将学习笔记写下来,希望向各位大牛们学习交流! 不当之处请斧正!在此感谢!这边就先从学习Sqlserver写起,自己本身对数 ...