PHP安装使用Zend Opcache扩展

简介

Zend OPCache 的前身是Zend Optimizer + (Zend O+),于 2013年3月中旬更名为 Opcache。其经过 opcode 缓存和优化提供更快的 PHP 执行过程。它将预编译的脚本文件存储在共享内存中供之后使用,从而避免了从磁盘读取代码并进行编译的时间消耗。同时,它还应用了一些代码优化模式,使得代码执行更快。php

PHP 在5.5发行版后自带了Zend OPCache扩展,但默认没有开启,PHP5.2,5.3,5.4版也可使用,但须要自行下载扩展。html

什么是opcode缓存

->深刻理解PHP原理之Opcodesgit

当解释器完成对脚本代码的分析后,便将它们生成能够直接运行的中间代码,也称为操做码(Operate Code,opcode)。github

Opcode cache 的目地是避免重复编译,减小 CPU 和内存开销。若是动态内容的性能瓶颈不在于 CPU 和内存,而在于 I/O 操做,好比数据库查询带来的磁盘 I/O 开销,那么 opcode cache 的性能提高是很是有限的。数据库

可是既然 opcode cache 能带来 CPU 和内存开销的下降,这总归是好事 —— 本着环保的态度,也应该尽可能减小消耗不是? :Dapache

现代操做码缓存器(Optimizer+,APC2.0+,其余)使用共享内存进行存储,而且能够直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,一般下降了总体服务器的内存消耗,并且不多有缺点。vim

Windows下的配置

1,PHP5.5版本前到此下载扩展,放到zend_ext目录中。windows

2,修改php.ini配置缓存

[php]
engine = On
zend_extension=php_opcache.dll

3,根据官方建议php.ini的 [opcache] 下修改配置,以得到更好的性能服务器

[opcache] 
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

 Linux下的配置

 1,安装扩展(PHP5.5版本以上跳过此步)

wget http://pecl.php.net/get/zendopcache-7.0.5.tgz
tar zxvf zendopcache-7.0.5.tgz
cd zendopcache-7.0.5
/path/to/php/bin/phpize
./configure --with-php-config=/path/to/php/bin/php-config
make && make install

2,修改php.ini

 ①在[php]下添加

zend_extension=php_opcache.so

   ②在[opcache]下添加

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

 

 

配置完成后重启apache或php-fpm,phpinfo()看到Zend OPCache为Enabled

php -m|grep opcache,有显示opcache

php -v 显示with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies 便可

 

 

设置例外

也许服务器上某些内容,好比正在进行调试的网站等,咱们不但愿对其进行 OPcache。那就能够经过黑名单来将须要例外的文件排除掉。

在 OPcache 的配置文件中有一行配置,以下,

opcache.blacklist_filename=/etc/php.d/opcache*.blacklist

该配置指定用于存储文件名黑名单的那个文件。很显然这里使用通配符 * 来指定了一系列文件而不只仅是特定某个文件。能够一直启用这一行。等到须要排除某些文件的时候,就编辑对应的黑名单文件。例如,针对 /srv/www/sites/devSite 文件夹下的全部文件,编辑(或者新建)文件,

vim /etc/php.d/opcache-devSite.blacklist

内容为,

/srv/www/sites/devSite/*

通配符 * 表示全部 devSite 文件夹下的文件。

完了以后从新启动 php-fpm 服务就能够了。

 

 

经常使用函数

opcache_compile_file($php_file); #预生成opcode缓存
opcache_is_script_cached($php_file) #查看是否生成opcode缓存
opcache_invalidate($php_file, true) #清除单个缓存

opcache_reset(); #清空缓存

opcache_get_status(); #获取缓存的状态信息
opcache_get_configuration(); #获取缓存的配置信息

 

Zend OPCache的详细配置

->到此

相关问题

【官方】
你也能够禁用 opcache.save_comments 而且启用 opcache.enable_file_override。 须要提醒的是,在生产环境中使用上述配置以前,必须通过严格测试。 由于上述配置存在一个已知问题,它会引起一些框架和应用的异常, 尤为是在存在文档使用了备注注解的时候。

若是禁用此选项,那么PHP中全部的comment会被禁用,性能会提高,可是有些框架可能会受影响,好比Wordpress,Drupal八、PHPUnit等,建议不要禁用。

 

 

Zend OPCache的管理工具

1,phpinfo()下能够查看使用状态;

2,https://github.com/amnuts/opcache-gui

3,https://github.com/PeeHaa/OpCacheGUI

4,https://github.com/rlerdorf/opcache-status

 

 

文章参考:

http://www.drupal001.com/2014/09/zend-opcache-php/

http://cnzhx.net/blog/zendopcache-accelerate-php/#install_via_source

相关文章
相关标签/搜索