澳门新葡萄京官网首页LNMP上升级部署PHP加速器eAccelerator

接着我们要关注一下PHP加速的另一个领域―缓存工具软件。这类软件都是从优化PHP运行环境来提速的,不需要改变任何代码。我们可以大概地将它们称为“执行码优化/缓存工具”,你可以理解为它们用来实现比较底层的优化/缓存。
以下列出目前比较常用的此类工具,具体哪种效果最好,请用自己的服务器环境测试:
(一) APC Alternative PHP Cache
APC运行于Linux和FreeBSD,你需要自己编译安装。按照其开发人员的说法,在他们的测试环境下可以提高脚本速度50%-400%。并且APC是个开源项目,已经加入了PHP的PECL库,很值得一试。
(二) Turck MMCache Turck
MMCache似乎是此类软件中目前最受欢迎的一种,它开放源代码,完全免费。它将PHP代码预编译并缓存起来,同时也对PHP运行环境进行一定优化。按照其官方文档的说法,MMCache可以明显地减轻服务器的负载,并提高脚本执行速度1-10倍。
MMCache与另一个知名的加速软件Zend
Optimizer兼容,但注意必需先安装MMCache。除了加快PHP程序的速度,MMCache还可以将PHP代码加密。
Turck MMCache同时支持Linux和Win32平台。 (三) PHPA the PHP Accelerator
PHPA又是另一个流行的PHP加速软件。在其官方网站上有分别使用PHPA与APC、Zend
Cache的PHP脚本执行测试对比,其表现略优于APC,略逊于Zend Cache。
PHPA支持Linux, FreeBSD, OpenBSD, BSDi和Solaris系统. (四) Zend
Performance Suite Zend Performance
Suite是老牌的PHP加速/优化软件,依托于PHP领域最知名的Zend公司。目前已经推出4.0版本,它可以为PHP应用提供程序加速,内容缓存,文件压缩,下载服务等,功能十分强大,获得好几个PHP杂志的推荐奖―但是不得不提起,它也很昂贵,目前的价格是1875美元。
以上几种加速软件,希望读者按照服务器环境自行测试并选择其中最适用的,因为我没有办法提供一个普遍适用的测试标准来判断哪种方案是最有效的。综合起来看,我个人认为Turck
MMCache是个值得推荐的选择,免费而且功能相当出色。

本文仅在LAMP或LNMP架构的基础上升级部署PHP加速器“eAccelerator”

说明

一、关于:eAccelerator的介绍和理解

PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速。对于PHP
5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP
APC加速的方法。

1.起源背景   

opcache是Zend Optimizer编译到php环境中的名字,意思即优化缓存。Zend
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能,
存储预编译字节码的好处就是省去了每次加载和解析 PHP 脚本的开销。

   eAccelerator
是一个免费开源的PHP加速、优化、编译和动态缓存的项目,它可以通过缓存PHP代码编译后的结果来提高PHP脚本的性能,使得一向很复杂和离我们很远的
PHP脚本编译问题完全得到解决。通过使用eAccelerator,可以优化你的PHP代码执行速度,降低服务器负载,可以提高PHP应用执行速度最高
达10倍。
   eAccelerator 项目诞生于2004年,当时它是作为 Turck MMCache 项
目的一个分支提出并投入开发的。 Turck MMCache 由 Dmitry Stogov
开发,是个非常优秀的PHP内存缓存加速系统,如今仍然有很大部分 eAccelerator
的代码应用到该项目中,目前该项目有很长时间没有更新了,对于最新的PHP5.x的支持还未推出。

这个PHP加速插件的主要原理就是把PHP执行后的数据缓冲到内存中从而避免重复的编译过程,能够直接使用缓冲区已编译的代码从而提高速度,降低服务器负载,它们的效率是显而易见的。

2、原理
   eAccelerator
通过把经过编译后的PHP代码缓存到共享内存中,并在用户访问的时候直接调用从而起到高效的加速作用。它的效率非常高,从创建共享内存到查找编译后的代码
都在非常短的时间内完成,对于不能缓存到共享内存中的文件和代码,eAccelerator还可以把他们缓存到系统磁盘上。
   eAccelerator
同样还支持PHP代码的编译和解释执行,你可以通过encoder.php脚本来对php代码进行编译达到保护代码的目的,经过编译后的代码必须运行在安
装了eAccelerator的环境下。eAccelerator编译后的代码不能被反编译,它不象其他一些编译工具那样可以进行反编译,这将使得代码更
加安全和高效。

在 PHP 5.5及以后的版本中 OpCache 已内建该模块,在编译安装php时使用
–enable-opcache 即可在以后的开发工作中正常使用Opcache了。

3.调用 eAccelerator 过程
Apache中使用mod_php的请求、响应执行流程:
1、Apache接收请求。
2、Apache传递请求给mod_php。
3、mod_澳门新葡萄京官网首页,php定位磁盘文件,并加载到内存中。
4、mod_php编译源代码成为opcode树。
5、mod_php执行opcode树。

在命令行下可通过如下命令检查是否已经安装了OPcache:

PHP加速器相应的就是第四步,目的就是防止PHP每次请求都重复编译PHP代码,因此提高的访问速度(在漂移中俗称:加速器)
//(以上信息摘自互联网,以下为配置过程)

php -m | grep "OPcache"

二、系统信息

有结果则代表已安装了。

1.系统环境: (在原有基础上直接升级部署)
参考:http://www.linuxidc.com/Linux/2012-02/53228.htm
硬件:HP 360G4/2G
System:CentOS 5.4 
Web:nginx-1.1.6.tar.gz  
FastCGI:php-5.3.8.tar.gz
DB:mysql-5.5.3-m3.tar.gz

安装OPCache模块

2.eAccelerator软件下载
#wget

如果你的php环境没有安装该模块,也可以通过如下方法进行安装:

也可以到这里下载http://www.linuxidc.com/Linux/2011-04/34964.htm

wget http://pecl.php.net/get/zendopcache-7.0.2.tgztar xzf zendopcache-7.0.2.tgzcd zendopcache-7.0.2phpize 

澳门新葡萄京官网首页 1

(如果不知道 phpize 在哪里的话可以通过 find
命令进行查找,也可以找到PHP路径,通常是在一起的,我的就在/alidata/server/php/bin/phpize,下面这行也要按你的php.ini路径自行修改)

./configure --with-php-config=/usr/local/php/bin/php-configmakemake install

如果显示Installing shared extensions:
/alidata/server/php/lib/php/extensions/no-debug-zts-20100525/
则表示安装成功了。

开启OPCache模块支持

找到php.ini文件,在文件末尾加上如下代码(如果已经存在[opcache]这个标签了,则只需在这个标签下做相应的添加或者修改):

[opcache]; dll地址zend_extension=php_opcache.dll; 开关打开opcache.enable=1; 开启CLIopcache.enable_cli=1; 可用内存, 酌情而定, 单位为:Mbopcache.memory_consumption=128; Zend Optimizer + 暂存池中字符串的占内存总量.opcache.interned_strings_buffer=8; 对多缓存文件限制, 命中率不到 100% 的话, 可以试着提高这个值opcache.max_accelerated_files=10000; Opcache 会在一定时间内去检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 定位为秒opcache.revalidate_freq=1; 打开快速关闭, 打开这个在PHP Request Shutdown的时候回收内存的速度会提高opcache.fast_shutdown=1; 不保存文件/函数的注释opcache.save_comments=0

添加完毕重启apache或者nginx服务器,打开phpinfo页面看看是否已经生效,如果看到如下信息则代表已经配置成功了。

功能测试以及注意事项

在phpinfo()信息中, 目前来看有两条信息犹为重要:

Cache hits Cache misses

通过这两条信息中即可观察缓存运行情况。

我们做个测试,验证一下什么是opcache,新建包含如下代码的一个文件:

echo 'hello opcache';

这是一段非常简单的php代码,请保存为demo.php文件然后访问,随意刷新,Cache
hits数值会不停地增加,说明起作用了。

echo 'hello codetc.com';

再刷新demo.php,应该可以看到效果,打印出来的值仍然是 hello
opcache,即源码被缓存了,它不再解析demo.php文件。

那多少秒之后其结果才会变为 hello phpernote.com 呢?这里可通过设置:

opcache.force_restart_timeout=180 

的时间来控制更新速度,这里的单位是秒,即180秒后重新编译一次源php编码。

这就类似于web项目中的静态文件缓存一下,比如我们加载一个网页,浏览器会自动帮我们把jpg,css缓存起来,唯独php没有缓存,每次均需要open文件,解析代码,
执行代码这一过程,而opcache即可解决这个问题,代码会被高速缓存起来,提升访问速度。

所以当改变PHP文件代码后,并不能立即看到效果,这视opcache.revalidate_freq的更新周期而定,所以建议在项目更新执行自动化脚本利用opcache_reset()函数自动重置opcache。OPcache总共提供了如下几个函数:

opcache_compile_file — 无需运行,即可编译并缓存 PHP 脚本
opcache_get_configuration — 获取缓存的配置信息 opcache_get_status —
获取缓存的状态信息 opcache_invalidate — 废除脚本缓存 opcache_reset —
重置字节码缓存的内容

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注