Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[教程] 让你的php程序效率更高 - eAccelerator加速,附 eAccelerator 各版本 for PHP 5.2.17

[复制链接]
netbarghost 发表于 2011-5-25 18:57:41 | 显示全部楼层 |阅读模式
本帖最后由 netbarghost 于 2011-8-10 18:41 编辑

让你的php程序效率更高
——eAccelerator加速
转自:http://bbs.netbarghost.com/thread-128-1-1.html(网吧幽灵)

  eAccelerator是一个自由开放源码php加速器,优化和动态内容缓存,提高了php脚本的缓存性能,使得PHP脚本在编译的状态下,对服务器的开销几乎完全消除。 它还有对脚本起优化作用,以加快其执行效率。使您的PHP程序代码执效率能提高1-10倍。

eAccelerator 0.9.5.3 for PHP 5.2.17(VC6编译):
Thread Safe 版 -
Non Thread Safe 版:

eAccelerator 0.9.6.1 for PHP 5.2.17(VC6编译):
Thread Safe 版 -
Non Thread Safe 版:

安装eAccelerator
  将php_eaccelerator.dll复制到PHP目录下的ext文件夹下,打开php.ini,在
  1. extension=php_zip.dll
复制代码

后面,添加
  1. extension=php_eaccelerator.dll
复制代码

(另起一行,不能在同一行),在
  1. ; Local Variables:
  2. ; tab-width: 4
  3. ; End:
复制代码
前面加上
  1. [eaccelerator]
  2. eaccelerator.shm_size = "64"
  3. eaccelerator.cache_dir = "D:\php_eaccelerator"
  4. eaccelerator.enable = "1"
  5. eaccelerator.optimizer = "1"
  6. eaccelerator.check_mtime = "1"
  7. eaccelerator.debug = "0"
  8. eaccelerator.filter = ""
  9. eaccelerator.shm_max = "0"
  10. eaccelerator.shm_ttl = "300"
  11. eaccelerator.shm_prune_period = "600"
  12. eaccelerator.shm_only = "0"
  13. eaccelerator.compress = "1"
  14. eaccelerator.compress_level = "9"
  15. celerator.log_file = "D:\php_eaccelerator_log"
  16. eaccelerator.keys = "shm_and_disk"
  17. eaccelerator.session = "shm_and_disk"
  18. eaccelerator.content = "shm_and_disk"
  19. eaccelerator.allowed_admin_path = "D:\wwwroot\test\eaccelerator"
复制代码

eaccelerator.shm_size:用来设置分配给eAccelerator用来缓存php的最大共享内存,单位是mb,如果设置为0,就使用默认大小。在linux系统中一个process能分配的最大内存是由/proc/sys/kernel/shmmax限制的,所以如果eA设置的内存超出了这个值,eA在初始化的时候会失败。shmmax的单位是字节(bytes)。
eaccelerator.cache_dir:用来设置硬盘缓存目录。eA用来存放预编译代码,session数据,内容和用户入口。默认值是"/tmp/eaccelerator"。
eaccelerator.enable:用来设置是否启用或禁用eAccelerator,设置1为启用,设置0为禁用。
eaccelerator.optimizer:开启或关闭优化,用户加速代码的执行。1为开启,0为关闭,优化仅仅在脚本被编译时候发生并且是在被缓存之前。
eaccelerator.check_mtime:在每次命中的时候Eaccelerator都会检查脚本的修改时间来判断是不是脚本发生的变化来决定是否需要重新编译。尽管检查比打开文件并编译要快,但仍然会带来一些开销的,因为每次都会有状态调用要完成。这个配置可以关闭这个检查。不过关闭检查带来的不利就是每次更新了文件需要认为手动的清除cache。默认检查是启用的,1是启用,0是禁用。
eaccelerator.debug:开启关闭debug日志。如果设置为1,将打印很多文件命中的信息到日志中。这个在排查eAccelerator的时候很有用。
eaccelerator.filter:用来决定哪个php文件被缓存。可以通过使用通配符(比如"*.php *.phtml")来匹配需要缓存的php脚本。如果以"!"开头,表示不匹配,这个参数默认是空,可以缓存所有编译好的php脚本需要注意的是eaccelerator.filter并不是基于URL工作的,而是基于文件的绝对路径,比如定义了"!/home"的话,那所有/home目录的脚本都不会被缓存。如果要定义多个匹配,使用空格或者制表符分开,而不是逗号。
eaccelerator.shm_max:设置内存缓存可以缓存文件的最大值。
eaccelerator.shm_ttl:当eAcelerator没有空余的共享内存的时候,就会把最少shm_ttl设置的秒数没访问过的脚本从缓存中释放掉,默认值是0,表示eA不会释放任何缓存。
eaccelerator.shm_prune_period:当没有足够的内存用来缓存的时候,eA会在上次清除缓存的时间超过了shm_prune_period设定的秒数时再次尝试清除过期的脚本。默认值为0,eA将不从缓存中清除过期的脚本。
eaccelerator.shm_only:启用或者禁用磁盘缓存。这个选项对session数据和内容的缓存没效果。默认值是0,允许eA使用磁盘和内存进行缓存。
eaccelerator.compress:当使用eaccelerator_content_* 的api时,eA可以在缓存前对内容进行压缩。默认值为1表示启用,禁用为0。
eaccelerator.compress_level:内容缓存的压缩等级。默认值为9,是最大压缩级别。
eaccelerator.log_file:设置eaccelerator日志的存放目录。如果这选项没有配置,则数据都被记录到stderr,如果使用php的是apache,则数据都被记录到apache的error log中。
eaccelerator.keys | session | content:这些设置控制着eA缓存用户内容的存放地点。可用的值有shm_and_disk 使用内存和磁盘进行缓存(默认值)shm 在内存中缓存数据,当内存满了或者数据大小超过了eaccelerator.shm_max设置的值就缓存到磁盘上shm_only 只使用内存缓存数据disk_only 只使用磁盘缓存数据none 不缓存数据。
eaccelerator.allowed_admin_path:控制面板所在目录,比如你的网站目录为D:\wwwroot\test\,可以建立一个文件夹eaccelerator,将control.php复制进里面,这里的值就为D:\wwwroot\test\eaccelerator
  保存php.ini后,重启IIS,查看你的phpinfo
  1. with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
复制代码

这就是eAccelerator加载成功了。

开启你网站程序的eAccelerator功能
  eAccelerator配置好后,会自动对php程序进行加速。但是,有的php程序可以主动调用eaccelerator的一些缓存功能,让程序运行更快,比如:discuz,将config目录下config_global.php里的$_config['memory']['eaccelerator']设置为 1 即可。
  1. $_config['memory']['eaccelerator'] = '1';
复制代码

至此,已经全部配置完毕。

PS:eAccelerator为啥不用最新的0.9.6.1呢,因为,0.9.6开始,就取消了user cache功能,也就是步骤四中所说,php程序主动调用eAccelerator的缓存功能。0.9.5的最后版本就是0.9.5.3。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

2

查看全部评分

beiying007 发表于 2011-5-27 15:25:19 | 显示全部楼层
楼主你真是我的偶像啊!!!
不仅好心分享,还说得这么详细,让我等菜鸟无后顾之忧!
我真TM要感谢你八辈祖宗!{:soso_e144:}
回复

使用道具 举报

zhouhuan18 发表于 2011-5-27 18:44:01 | 显示全部楼层
本帖最后由 zhouhuan18 于 2011-5-27 18:45 编辑

多谢LZ分享,正在找这个版本的

忽然发现DZ官方居然不用这个了。。。。

回复

使用道具 举报

pcyi 发表于 2011-5-28 13:14:07 | 显示全部楼层
看看这些也好
回复

使用道具 举报

labman 发表于 2011-6-3 18:21:28 | 显示全部楼层
請問怎用 vc6來編譯這個!?謝謝~
回复

使用道具 举报

rstar 发表于 2011-6-3 22:54:50 | 显示全部楼层
观望了哈!~~~~~~
回复

使用道具 举报

labman 发表于 2011-6-4 02:18:22 | 显示全部楼层
請問能編譯 PHP 5.3 (5.3.6) 用的 eaccelerator 嗎? 感謝分享好東西!!
回复

使用道具 举报

labman 发表于 2011-6-4 23:55:42 | 显示全部楼层
今天試著編譯一個,但是過程出現些警告...
..\optimize.c(1775) : warning C4113: 'unary_op_type' 與來自 'int (__cdecl *)(zval *,zval *)' 的參數清單不同
..\optimize.c(2713) : warning C4018: '>=' : signed/unsigned 不相符
..\optimize.c(2753) : warning C4018: '>=' : signed/unsigned 不相符
opcodes.c
mm.c
eaccelerator.c
ea_store.c
..\ea_store.c(56) : warning C4090: '函式' : 不同的 'const' 限定詞

請問這樣做出來的會出問題嗎?
回复

使用道具 举报

 楼主| netbarghost 发表于 2011-6-7 20:48:08 | 显示全部楼层
5.3.6好像要用VC9编译的
回复

使用道具 举报

mfch666 发表于 2011-6-9 01:11:19 | 显示全部楼层
小站压根没必要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-28 20:53 , Processed in 0.038617 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表