配置eAccelerator和XCache扩展来加速PHP程序的执行


Posted in PHP onDecember 22, 2015

eaccelerator安装配置PHP加速
eAccelerator简介
eAccelerator是一个的免费、开源的PHP模块,它能够为提供PHP加速、优化、加码、和动态内容缓存功能。它通过存储PHP脚本编译后的状态而加快执行PHP脚本的速度,而不需要频繁的编译这个PHP脚本。而且它能优化PHP脚本,以提高执行PHP的速度。eAccelerator特色是减少了服务器负载、使PHP脚本加速1-10倍。
下载地址:http://sourceforge.net/projects/eaccelerator/
解压修改源代码(解决出现open_basedir等报错)

# tar jxvf eaccelerator-0.9.6.tar.bz2
# cd eaccelerator-0.9.6/
# vi eaccelerator.c

找到以下:

if (PG(open_basedir) && php_check_open_basedir(realname TSRMLS_CC)) {

改为

if (PG(open_basedir) && php_check_open_basedir(file_handle->filename TSRMLS_CC)) {

编译安装扩展eaccelerator

# /usr/local/php-5.2.14/bin/phpize # 对应你自己的phpize,一定要在eaccelerator-0.9.6目录执行
# ./configure
?enable-eaccelerator \
?with-php-config=/usr/local/php-5.2.14/bin/php-config
# make
# make install # 会提示你扩展装到了哪个目录,我这边是/usr/local/php-5.2.14/lib/php/extensions/no-debug-non-zts-20060613/

配置php.ini
如果本机之前有加过扩展,直接跳到下一步“添加eacclerator扩展”

Vi /usr/local/php-5.2.14/etc/php.ini

extension_dir = ./

替换成

extension_dir=/usr/local/php-5.2.14/lib/php/extensions/no-debug-non-zts-20060613/

添加eacclerator扩展

# vi /usr/local/php-5.2.14/etc/php.ini

 增加如下内容

[eaccelerator]
 extension=eaccelerator.so
 eaccelerator.shm_size=”16″
 eaccelerator.cache_dir=”/tmp/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.shm_prune_period=”0″
 eaccelerator.shm_only=”0″
 eaccelerator.compress=”1″
 eaccelerator.compress_level=”9″

创建eaccelerator目录

# mkdir /tmp /eaccelerator
# chmod 777 /tmp/eaccelerator

重启测试
重启apache或者nginx,并且查看效果,如果/tmp/eaccelerator下有目录,说明安装成功了。
配置参数详解(eaccelerator)

eaccelerator.shm_size=”8″
eAccelerator 可以使用的共享内存的数量 (以兆为单位) . “0” 是指操作系统的默认值. 默认值是 “0”.可根据服务器的实际情况来调整,8,16,32,64,128都是可以的。
eaccelerator.cache_dir=”/tmp/eaccelerator ”

这个目录是给磁盘缓存使用. eAccelerator 在这里储存预先编译好的代码, 进程数据, 内容以及用户的自定义内容. 同样的数据也能被储存在共享内存中 (这样可以提高访问速度). 默认的设置是 “/tmp/eaccelerator”.

eaccelerator.enable=”1″

开启或关闭 eAccelerator。“1” 为开启,“0” 为关闭。默认值为 “1”。

eaccelerator.optimizer=”1″

启或关闭内部优化器,可以提升代码执行速度。“1” 为开启,“0” 为关闭。默认值为 “1”。

eaccelerator.check_mtime=”1″

打开或者关闭 PHP 的文件修改检查. “1” 是指打开, “0” 是指关闭. 如果您在修改以后重新编译 PHP 的文件,那么您应当设置为 “1”. 默认值是 “1”.

eaccelerator.debug=”0″

开启或关闭调试日志记录。“1” 为开启,“0” 为关闭。默认值为 “0”。会将缓存命中得记录写入日志。

eaccelerator.filter=””

判断哪些 PHP 文件必须缓存。您可以指定缓存和不缓存的文件类型(如 “*.php *.phtml”等),如果参数以 “!” 开头,则匹配这些参数的文件被忽略缓存。默认值为 “”,即,所有 PHP 文件都将被缓存。

eaccelerator.shm_max=”0″

当使用 ” eaccelerator_put() ” 函数时禁止其向共享内存中存储过大的文件。该参数指定允许存储的最大值,单位:字节 (10240, 10K, 1M)。“0” 为不限制。默认值为 “0”。

eaccelerator.shm_ttl=”0″

当eAccelerator 获取新脚本的共享内存大小失败时,它将从共享内存中删除所有在最后 “shm_ttl” 秒内没有存取的脚本缓存。默认值为 “0”,即:不从共享内春中删除任何缓存文件。

eaccelerator.shm_prune_period=”0″

当eAccelerator 获取新脚本的共享内存大小失败时,他将试图从共享内存中删除早于“shm_prune_period” 秒的缓存脚本。默认值为 “0”,即:不从共享内春中删除任何缓存文件。

eaccelerator.shm_only=”0″

允许或禁止将已编译脚本缓存在磁盘上。该选项对 session 数据和内容缓存无效。默认值为 “0”,即:使用磁盘和共享内存进行缓存。

eaccelerator.compress=”1″

允许或禁止压缩内容缓存。默认值为 “1”,即:允许压缩。

eaccelerator.compress_level=”9″

指定内容缓存的压缩等级。默认值为 “9”,为最高等级。

eaccelerator.keys = “disk_only”
eaccelerator.session = “disk_only”
eaccelerator.content = “disk_only”

设置内容缓存的存放的地方,可以设置为:

  • shm_and_disk 在共享缓存和硬盘(默认值)
  • shm 默认存在共享内存,如果共享内存已满或大小超过 “eaccelerator.shm_max” 的值,就存到硬盘
  • shm_only 只存放在共享内存
  • disk_only 只存放在硬盘
  • none 不缓存数据

PHP扩展xcache安装
xcache模块可以缓存php运行时编译生成的opcode可以加速php程序的效率,安装xcache和安装memcache方法类似,都是以扩展的方式安装,PHP任何扩展方法基本上都是如下,所以不需要特意去找xxx扩展的文档.
安装PHP扩展xcache

# wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz
# tar -xvf xcache-3.2.0.tar.gz
# cd xcache-3.2.0
# ./configure ?with-php-config=/usr/local/php/bin/php-config ?enable-xcache
# make && make install

会生成类似如下信息

Installing shared extensions:  /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

所有的模块都会生成到这个目录下
编辑php配置文件

# vim /usr/local/php/etc/php.ini
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so

重载PHP

# service php-fpm reload

如果是你Apache+PHP模式,那么重启Apache即可.

# service httpd restart

或者

# /usr/local/apache-2.2.27/bin/apachectl restart

测试结果

配置eAccelerator和XCache扩展来加速PHP程序的执行

PHP 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
PHP number_format() 函数定义和用法
Jun 01 PHP
解析thinkphp import 文件内容变量失效的问题
Jun 20 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
PHP基本语法总结
Sep 06 PHP
php新浪微博登录接口用法实例
Dec 23 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
PHP实现找出链表中环的入口节点
Jan 16 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
php对微信支付回调处理的方法
Aug 23 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 #PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 #PHP
php删除数组中重复元素的方法
Dec 22 #PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 #PHP
PHP内核探索之解释器的执行过程
Dec 22 #PHP
PHP内核探索之变量
Dec 22 #PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 #PHP
You might like
Smarty模板快速入门
2007/01/04 PHP
PHP Document 代码注释规范
2009/04/13 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
深入浅析JavaScript系列(13):This? Yes,this!
2016/01/05 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
JavaScript函数的4种调用方法实例分析
2019/03/05 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python requests 使用快速入门
2017/08/31 Python
Python生成器以及应用实例解析
2018/02/08 Python
Sanic框架请求与响应实例分析
2018/07/16 Python
解决python 上传图片限制格式问题
2019/10/30 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
2020/04/30 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
地雷战观后感
2015/06/09 职场文书
婚宴父亲致辞
2015/07/27 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle