本文介绍的PHP性能优化方法,我们在阿里云centos网站服务器(nginx + php 5.4)上做了实测。在之前没有安装其他PHP加速工具的情况下,简单安装Zend Opcache之后,系统CPU负载大概从33%降低到了23%,优化幅度在30%+,非常可观,值得推荐。
以下是优化前后的截图:
图一:安装OpCache前的CPU负载,大约维持在33%。
图二、安装OpCache之后的CPU负载,大约维持在23%。
以下是转载的文章,具体介绍了如何安装Zend OpCache,以及如何重启服务器,最终使得PHP网站的性能优化生效。
关于 Zend Opcache
Zend Opcache 原来叫做 Optimizer+ 是一款闭源但是可以免费使用的 PHP 优化加速组件, 后来 Zend 在 PHP Licence 下将其开源并改名为 Zend Opcache。
之所以要切换到 Zend Opcache,是因为各种评测结果都显示 Zend Opcache 性能优于 APC,尤其是对 wordpress 的加速更是经过验证的,而且从 PHP5.5 开始已经绑定了 Zend Opcache.
有关 Zend Opcache 的介绍和优点,网上已经有很多文章,我这里就不再赘述了。不了解的同学可以看一下 这篇文章,也可以通过这篇文章了解PHP OpCache的工作原理。
我的服务器环境
我的 Web 服务器环境是: CentOS 6.5 Final x86_64 + Nginx 1.4.4 + Apache 2.2.15 + PHP 5.4.28
之前装有 APC、Zend Guard Loader 和 ionCube Loader.
以上软件都是通过 YUM + remi 源安装的(如今在我所有的 VPS 上都是采用这种方式来安装软件,一般不再编译安装,主要是速度快,便于升级)。
相信很多朋友还用的是 PHP 5.3, 建议升级 PHP5.4 吧,且不说短数组语法、闭包支持已经内置的开发用 Web server,哪怕只是为了 wordpress 运行更快,也值得升级。当然只是建议, PHP5.2, 5.3 都是可以用 Zend Opcache 的。
安装 Zend Opcache
如果有安装 eAccelerato, XCache, APC 等其它的优化加速组件,最好先卸载,就像在电脑上装 XX 电脑管家必须先卸载 OO 安全卫士 或者 JJ 卫士等同类工具一样,都保留的话不但没有意义,而且会冲突。
我这里没卸载,主要是因为 Zend Opcache 没有数据缓存 API,我在没有 Memcached 的时候都会用 APC 来做 Laravel 的缓存驱动。
如果要卸载的话,执行:
yum erase php-pecl-apc
然后安装 PHP Opcache【关键步骤】:
yum install php-pecl-zendopcache
安装完成以后,在 /etc/php.d 目录下会自动添加 Zend Opcache 的配置文件 opcache-default.blacklist 和 opcache.ini.
打开 opcache.ini, 根据需要修改一下,下面是我的:
zend_extension=/usr/lib64/php/modules/opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
正常来说,这样就完成了 Zend Opcache 的安装,通过 php -m
查看模块是否正常加载,如果是apache服务器,执行 httpd -k restart
, 性能优化就可以生效了。
特别注意:如果是nginx+php-fpm服务器,不需要修改上述配置,直接使用service nginx restart && server php-fpm restart
重启服务器的命令,就可以生效了。
扩展阅读:Zend 扩展的加载顺序
如果有多个 Zend Extension 同时安装和使用,要注意加载顺序。一般来说ionCube Loader要先加载,Zend Guard Loader可以放在最后。我这里的加载顺序是:
0-ioncube_loader.ini opcache.ini zend_guard_loader.ini
输入 php -v
, 看到:
PHP 5.4.28 (cli) (built: May 2 2014 19:09:57)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with the ionCube PHP Loader v4.6.1, Copyright (c) 2002-2014, by ionCube Ltd., and
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies
说明已经成功安装和加载。然后 service httpd restart
重启 Apache,打开浏览器访问网站,验证是否一切正常即可。
本文转载自腾讯云专栏博客:https://cloud.tencent.com/developer/article/1145876。
更原始的版本来自:https://cloud.tencent.com/developer/article/1049821,但这个链接目前已经失效,所以只能使用上述转载的链接作为来源标注。