不重新编译php安装配置eAccelerator

时间:2023-01-06 22:26:40

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。默认为0
  • filter : 指定被缓存的后缀文件。默认值为””,表示缓存所有的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中看到类似这样的文件夹。

不重新编译php安装配置eAccelerator

二、监控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 ,在前面几行进行修改。

不重新编译php安装配置eAccelerator

ifxoxo.com

三、eaccelerator的加速效果

安装之后,写了一段排序代码,分别用了ab和webbench进行压力测试,看看加速效果如何。ab测试在正常的情况下的提速效果,webbench则测试在满负载下的提速效果。

1、ab测试正常测试

用 ab -n 10000 -c 500 进行测试

(1) 没启动eaccelerator

不重新编译php安装配置eAccelerator

ifxoxo.com

关键指标

每秒事务数 : Requests per second: 2366.20 [#/sec] (mean)

平均事务响应时间 :Time per request: 211.309 [ms] (mean)

(2) 启动了eaccelerator

不重新编译php安装配置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

不重新编译php安装配置eAccelerator

关键指标speed=327078 pages/min

(2) 启动eaccelerator

不重新编译php安装配置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的更多相关文章

  1. Linux 下编译并安装配置 Qt 4&period;53全过程

    最近准备做 Nokia 的 Symbian,Maemo 下触摸屏开发.考虑到程序的跨平台可移植性,最终选择使用 Qt 开发.相对来说,国内关于 Qt 相关文档并不算很多.作者将 Linux 下编译并安 ...

  2. Nutch2&period;3 编译和安装配置

    Nutch2.3 编译和安装配置 [一].介绍 Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫.现在Nutch分为两个版本:1. ...

  3. TensorFlow Python3&period;7环境下的源码编译&lpar;二&rpar;安装配置

    源代码树的根目录中包含了一个名为 configure 的 bash 脚本. $ ./configure 接下来,配置系统会给出各种询问,以确认编译时的配置参数.   一.重要参数解释 Please s ...

  4. TensorFlow Python2&period;7环境下的源码编译&lpar;二&rpar;安装配置

    源代码树的根目录中包含了一个名为 configure 的 bash 脚本. $ ./configure 接下来,配置系统会给出各种询问,以确认编译时的配置参数.   一.重要参数解释 Do you w ...

  5. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  6. ubuntu14&period;04下安装cudnn5&period;1&period;3&comma;opencv3&period;0&comma;编译caffe及配置matlab和python接口过程记录

    已有条件: ubuntu14.04+cuda7.5+anaconda2(即python2.7)+matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照: ...

  7. &lbrack;大牛翻译系列&rsqb;Hadoop(20)附录A&period;10 压缩格式LZOP编译安装配置

    附录A.10 LZOP LZOP是一种压缩解码器,在MapReduce中可以支持可分块的压缩.第5章中有一节介绍了如何应用LZOP.在这一节中,将介绍如何编译LZOP,在集群做相应配置. A.10.1 ...

  8. Linux 下编译、安装、配置 QT

    转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...

  9. &lbrack;Linux 小技巧&rsqb; Ubuntu 14&period;04 下编译、安装、配置最新开发版 GoldenDict

    1. 背景介绍 GoldenDict 是一款非常优秀的跨平台电子词典软件,支持 StarDict.Babylon 等多种词典.其 PC 版基于 Qt 编写,完全免费.开源且没有广告.GoldenDic ...

随机推荐

  1. RTP协议学习大总结从原理到代码

    from:http://wenku.baidu.com/view/aaad3d136edb6f1aff001fa5.html 一.流媒体概念 流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和 ...

  2. MongoDB启动配置等

    目录: 一.mongoDB 启动配置 二.导出,导入,运行时备份 三.Fsync锁,数据修复 四.用户管理,安全认证 一.启动项 mongod --help C:\Windows\system32&g ...

  3. Linux上夏时令的应对

    问题 今天,有游戏客户找来说,2016.11.6号洛杉矶将会进入冬时令,他们在洛杉矶机房的ECS在使用的是洛杉矶的当地时间,问我,进入冬时令,对他们的linux有啥影响?是否需要做好,批量修改linu ...

  4. ios UIKit动力 分类: ios技术 2015-07-14 12&colon;55 196人阅读 评论&lpar;0&rpar; 收藏

    UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...

  5. orcal - 添加用户、授权

    create user jy2 identified by jy2; grant dba to jy2;

  6. Create an Azure SQL database in the Azure portal

    Create a SQL database An Azure SQL database is created with a defined set of compute and storage res ...

  7. 经纬度编码方法推荐-plus code简介

    今天罗孚为大家推荐一种经纬度编码的方法--plus code,原名open location code,是Google于2014年发明的,旨在将表示地理位置的经纬度通过算法推导成一个字符串. plus ...

  8. Putting Boxes Together CodeForces - 1030F &lpar;带权中位数&rpar;

    #include <iostream> #include <algorithm> #include <cstdio> #include <math.h> ...

  9. IE6&comma;IE7浏览器下 margin 无效的解决方法

    今天有时间,所以特意做了一个测试. 复制代码 代码如下: <style type="text/css"> .test-1,.test-2{border:5px soli ...

  10. 第14章 UDP编程(1)&lowbar;UDP客户端服务器模型

    1. UDP编程模型 (1)UDP客户端服务器模型 ①客户端可以不调用bind()而直接与服务器通讯. ②UDP是无连接的,因此服务端不需要调用accept和listen,客户端也无需调用connec ...