现在基于PHP的网站越来越多,也有很多成熟的cms程序方便使用。在网站的流量逐渐增大之后,服务器对CPU及内存的要求也就越来越高。一味的增加硬件成本是不可取的,采用合理的缓存策略是减少服务器访问压力的有效方法。tennfy将会在后面陆续介绍一些php及数据库的缓存方法。今天主要来介绍使用Zend Opcache加速PHP。
PHP缓存原理介绍
PHP是脚本语言,在解释器完成对脚本代码的分析后,会将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁盘I/O开销,那么opcode cache的性能提升是非常有限的。但是既然opcode cache能带来CPU和内存开销的降低,这总归是好事。
现代操作码缓存器( APC、 eAccelerator、 XCache以及Zend Opcache)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点。其中Zend Opcache插件作为zend公司官方推出的缓存插件,缓存效果更好,可以保证与最新PHP版本的兼容与更新。因此,tennfy推荐安装Zend Opcache进行php的缓存加速。
Zend Opcache已经集成在了PHP 5.5里面,但也支持低版本的 PHP 5.2.*, 5.3.*, 5.4.*,下面介绍Zend Opcache的安装方法。
Zend Opcache安装方法
安装方法如下:
# Install "pecl" via php-pear
apt-get install -y php-pear
# Install build dependencies
apt-get install -y build-essential php5-dev
# Install Zend OpCache
pecl install zendopcache-7.0.5
添加opcache.ini文件
vi /etc/php5/mods-available/opcache.ini
在opcache.ini中加入如下几行
zend_extension=/usr/lib/php5/20100525+lfs/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
其中128的意思是给它分配128M内存。
最后将该文件链接至conf.d目录下
ln -s /etc/php5/mods-available/opcache.ini /etc/php5/conf.d/20-opcache.ini
修改完成后,重启nginx以及php。
查看Zend Opcache效果
输入php -v,得到如下信息
PHP 5.4.45-1~dotdeb+7.1 (cli) (built: Sep 5 2015 00:21:03)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.5, Copyright (c) 1999-2015, by Zend Technologies
打印出phpinfo()信息,可以看到Zend OPcache的相关信息:
在phpinfo()信息中, 目前来看有两条信息犹为重要:
Cache hits (高级缓存命中)
Cache misses (高级缓存未命中)
通过以上两条信息就可以观察到缓存情况。
注意事项
安装完成后,最好将php5-dev卸载:
apt-get remove --purge build-essential php5-dev
不要同时安装APC、 eAccelerator、 XCache以及Zend Opcache。