- 帖子
- 8705
- 积分
- 27266
- 金钱
- 8451
- 在线时间
- 1895 小时
- 注册时间
- 2009-4-18
- 最后登录
- 2024-8-18
|
ZendOpcache 一键安装脚本,LNMP环境下一键安装 Opcache 缓存扩展
相关贴:
LNMP 0.9.1 延伸版发布, 可直接选择安装最新PHP版本,nginx版本,mysql版本等
大话VPS – Zend Opcache安装教程(1)
ZendOpcache作用:
Optimizer+ 是 Zend 开发的闭源但可以免费使用的 PHP 优化加速组件,是第一个也是最快的 opcode 缓存工具。现在,Zend 科技公司将 Optimizer+ 在 PHP License 下开源成为 Zend Opcache。免费空间1
Zend OPcache 通过 opcode 缓存和优化提供更快的 PHP 执行过程。它将预编译的脚本文件存储在共享内存中供以后使用,从而避免了从磁盘读取代码并进行编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。
个人理解:ZendOpcache,属代码驻内存型缓存,比任何硬盘缓存型更快,减少负载,
ZendOpcache会占用一定内存(设多少占多少)。VPS的内存至少256M起。
因缓存更新时间,有些程序不实时刷新。 所以是否选用他,请依程序而定。
注:使用ZendOpcache缓存后,你修改php配制文件,如Dx的config.php
php文件修改后,你需重启php才能立即生效,即重启了ZendOpcache
不然有时会出错,或过一会才生效。
LNMP ZendOpcache 一键安装脚本
二个安装脚本:一个是只能选装一个缓存扩展的脚本。
一个是与可与xceh一键安装可共存的脚本。 供大家测试。
只能单独安装脚本:
- wget http://vps.idc866.com/zendopcache.sh;sh zendopcache.sh
复制代码
可与Xcache一键脚本共存安装的:(经后可能删除)
- wget http://vps.idc866.com/opcacheX.sh;sh opcacheX.sh
复制代码
注:此脚本方便两个都想安装的,关于对比测试请看二楼。
与 Xcache共存是否负载、性能更好,需要长期观察才知。暂时不知。
注:ZendOpcache 支持php5.2/5.3/5.4/5.5,
安装界面:
说明:
1、可选项1、0, 1为安装,0为删除。 默认为 1, 即安装。本贴隐藏内容,需登录、回复后,即可浏览!
注:此脚本在军哥LNMP 0.8/0.9/1.0 版本下都完全兼容。
更新记录:
2013.07.13 推出 ZendOpcache 一键安装脚本,代码内存型高速缓存。支持php5.5
2013.07.16 增加内存、和缓存时间输入选项,让使用更灵活。
错误代码:
Tue Jul 16 20:34:01 2013 (15652): Fatal Error Unable to allocate shared memory segment of 99614720 bytes: mmap: No space left on device
这个代码出现在 执行 php-v 时显示。
原因是 ZendOpcache 设置的内存过多,无法分配而出现错误。
以上为在256M OVZ的VPS上设置 ZendOpcache 内存为100M,而出现了这错误。
解决办法:执行一下删除,后再重新安装,安装时把内存值调小。
个人见解,如有不同欢迎提出:
感觉 ZendOpcache 与 新版eaccelerator 做用一样,都是代码型缓存(无数据缓存)。
只不过 ZendOpcache 是以内存缓存,性能会更快。
而eaccelerator是以硬盘形式缓存(用的系统内存很小,分生成很多缓存文件)。
与 Xcache 有点不同,Xcache即带有PHP代码缓存,还有数据变量缓存做用。
只不过,个人感觉 Xcache 对PHP代码缓存性能 不如ZendOpcache,
性能对比可从PHP探针下的运算测试对比出来。
所以具体选用什么缓存扩展,可根据程序而定。 纯PHP程序推荐用ZendOpcache。
还有一个问题,需要以后慢慢测试:
opcache.memory_consumption=64 设置缓存内存
opcache.max_accelerated_files=4000 设置缓存文件个数
opcache.force_restart_timeout=180 设置缓存时间
这三个参数,如果缓存文件超过内存设的64M了,会重启缓存全部重新开始?
如果缓存文件数超过 4000个了,会重启缓存,全部重新开始?
如果缓存时间过了180秒,又会重新缓存一个? 越长越好么?
这几个参数还得慢慢使用中检测。
那么:页面数小、访问大,数据不时常需要更新的(几天或更长)使用这缓存应该不错。
如果访问量大,页面数多常常超过缓存文件数,或是内存过少常超过,
那不是缓存器会经常重启?
如果设2天过期,但由于以上两原因导致10分钟重启重新缓存的话,
由于频繁重启,那么,可能还不如使用磁盘缓存器,只要有空间就可长久缓存。
所以,这个缓存扩展,
根据页面数设内存大小。(能把访问的页都缓存下来,且要考虑VPS内存大小) 。
要根据程序,设缓存时间。(不实时更新的页,越长应该越好)。
这样才能体现其性能
以上个人见解,如有不同欢迎提出。
官方地址:http://pecl.php.net/package/ZendOpcache/ 查看最新版号
使用 Zend Opcache 加速 PHP
1. 什么是 opcode 缓存?
当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。如果动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操作,比如数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提升是非常有限的。但是既然 opcode cache 能带来 CPU 和内存开销的降低,这总归是好事 —— 本着环保的态度,也应该尽量减少消耗不是?
现代操作码缓存器(Optimizer+,APC2.0+,其他)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点。
Optimizer+ 相对 APC 的优点
1. 性能。根据测试,Zend Optimizer+ 始终优于 APC。随代码差异,每秒钟处理的请求数高 5~20%。Google doc 上记录的测试结果中,WordPress 2.1.1(不知道为什么不用个新版本的 WP 来测试),性能提高约 8%。理论上来说,对于 WP 3.5.1,性能应该也能得到大约 5~10% 的提升吧。对于运行 WordPress 的服务器而言,使用 Optimizer+ 可以显著降低 CPU 使用率和提高页面加载速度(graphics here)。 免费PHP空间
2. 支持新的PHP 版本。Zend和PHP 社区都会帮助Optimizer+能够支持最新版本的PHP。
3. 可靠性。Optimizer+拥有可选的损坏检测能力,可防止因数据损坏而导致的服务器崩溃
4. 更好的兼容性。PHP 社区打算让 Optimizer+ 与社区支持的所有 PHP 版本相兼容。
APC 相对 Optimizer+ 的优势
1. APC 有数据缓存 API,而 Optimizer+ 没有。
2. APC 能够回收旧的无效的脚本占用的内存。APC 有内存管理器,可以将那些不再使用的脚本关联的内存进行回收。而 Optimizer+ 不同,它将这样的内存标记为“脏的”,但并不会回收它们。一旦“脏的”内存占用配置阈值的百分比达到一定值,Optimizer+ 就将自己重新启动。这种行为在稳定性上既有优势也有劣势。
注意:Zend Opcache 与 eaccelerator 相冲突。要安装 Zend Opcache,
可能需要先卸载 eaccelerator —— 如果你用了这个加速模块的话。
安装前最好先删除 eacceleratro、xcache 或 apc 等组件。
注:APC 很多人用着常出502。PHP挂了。
Zend Opcache 已经集成在了PHP 5.5里面,
编译安装PHP5.5的时候加上--enable-opcache就行了 ,
使用opcache会提高php的性能,你可以和其他扩展一样静态编译(--enable-opcache)
或者动态扩展(zend_extension)加入这个优化项 (需修改php.ini 加入代码)。
相关贴:http://cnzhx.net/blog/zendopcache-accelerate-php/
在phpinfo()信息中, 目前来看有两条信息犹为重要:
Cache hits (高级缓存命中)
Cache misses (高级缓存未命中)
在这两条信息中即可观察缓存运行情况, 一目了然
高速缓存带来哪些优化呢? 对代码运行有多大帮助?
我们做个测试, 验证一下什么是opcache.
< ?php
echo “opcache”;
?>
这是一段非常简单的php代码, 请保存为demo.php文件然后访问, 随意刷新, Cache hits数值会不停地增加, 说明起作用了,
然后你修改代码为:
< ?php
echo “cache new”;
?>
注意代码中的" ,可能你复制过去就会成了全角的“ 你必需改为半角"
再刷新demo.php, 应该可以看到效果, 打印出来的值仍然是opcache, 即源码被缓存了, 它不再解析demo.php文件, 试着不停地刷新, 检测多少秒后才更新.
可设置: opcache.force_restart_timeout=180 的时间来控制更新速度.
这就类似于web项目中的静态文件缓存一下, 比如我们加载一个网页, 浏览器会自动帮我们把jpg, css缓存起来, 唯独php没有缓存, 每次均需要open文件, 解析代码, 执行代码这一过程, 而opcache即可解决这个问题, 代码会被高速缓存起来, 提升访问速度.
相关贴:http://www.oschina.net/question/998019_110792 |
|