Debian下安装Zend Opcache加速PHP

现在基于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安装方法

1、编译安装方法

Zend Opcache 已经集成在了PHP5.5里面,编译安装PHP5.5的时候加上–enable-opcache即可,下面介绍下PHP5.4及以下版本的安装。
执行以下代码:

1
2
3
4
5
6
7
wget http://pecl.php.net/get/zendopcache-7.0.5.tgz
tar xzf zendopcache-7.0.5.tgz
cd zendopcache-7.0.5
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

如果显示Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ 表示安装完成,下面要修改php的配置文件让它生效

在 php.ini 的最后面加入下面几行:

1
2
3
4
5
6
7
zend_extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/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

2、apt-get安装方法

安装方法如下:

1
2
3
4
5
6
7
# 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文件

1
vi /etc/php5/mods-available/opcache.ini

在opcache.ini中加入如下几行

1
2
3
4
5
6
7
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目录下

1
ln -s /etc/php5/mods-available/opcache.ini /etc/php5/conf.d/20-opcache.ini

安装完成后,最好将php5-dev卸载:

1
apt-get --purge remove php5-dev

修改完成后,重启nginx以及php。

查看Zend Opcache效果

输入php -v,得到如下信息

1
2
3
4
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-opcache

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

Cache hits     (高级缓存命中)
Cache misses   (高级缓存未命中)

通过以上两条信息就可以观察到缓存情况。

注意事项

不要同时安装APC、 eAccelerator、 XCache以及Zend Opcache。

参考文章:
新一代 PHP 加速插件 Zend Opcache
深入理解PHP Opcode缓存原理

此条目发表在服务器分类目录,贴了标签。将固定链接加入收藏夹。