当前位置:网站首页 > 技术博客 > 正文

php8 opcache



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

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

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

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

但是既然 opcode cache 能带来 CPU 和内存开销的降低,这总归是好事 —— 本着环保的态度,也应该尽量减少消耗不是? 😄

现代操作码缓存器(Optimizer+,APC2.0+,其他)使用共享内存进行存储,并且可以直接从中执行文件,而不用在执行前“反序列化”代码。这将带来显着的性能加速,通常降低了整体服务器的内存消耗,而且很少有缺点。

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
https://blog.csdn.net/yueyecheshou1980/article/details/configure --with-php-config=/path/to/php/bin/php-config
make && make install
复制代码
2,修改php.ini

①在[php]下添加

复制代码
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 © 1999-2016, by Zend Technologies 即可

设置例外

也许服务器上某些内容,比如正在进行调试的网站等,我们不希望对其进行 OPcache。那就可以通过黑名单来将需要例外的文件排除掉。

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

完了之后重新启动 php-fpm 服务就可以了。

常用函数#
复制代码
opcache_compile_file(php_file) #查看是否生成opcode缓存
opcache_invalidate($php_file, true) #清除单个缓存

opcache_reset(); #清空缓存

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

相关问题#
【官方】
你也可以禁用 opcache.save_comments 并且启用 opcache.enable_file_override。
需要提醒的是,在生产环境中使用上述配置之前,必须经过严格测试。
因为上述配置存在一个已知问题,它会引发一些框架和应用的异常, 尤其是在存在文档使用了备注注解的时候。
如果禁用此选项,那么PHP中所有的comment会被禁用,性能会提升,但是有些框架可能会受影响,比如Wordpress,Drupal8、PHPUnit等,建议不要禁用。

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

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

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

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

  • 上一篇: 线程死锁的四个必要条件
  • 下一篇: geo redis
  • 版权声明


    相关文章:

  • 线程死锁的四个必要条件2024-11-05 09:30:04
  • hikaricp(HikariCP简介)2024-11-05 09:30:04
  • rbf神经网络和bp神经网络2024-11-05 09:30:04
  • 霍夫曼编码树例题2024-11-05 09:30:04
  • linux性能指标2024-11-05 09:30:04
  • geo redis2024-11-05 09:30:04
  • linux桌面系统哪个好2024-11-05 09:30:04
  • java中集合框架的层次结构2024-11-05 09:30:04
  • iic协议 ack2024-11-05 09:30:04
  • es6新特性面试题2024-11-05 09:30:04