PHP修改完代码没有立马生效?

从PHP 5.5.0开始,PHP内置了字节码缓存功能,名为 Zend Opcache,默认情况下,PHP会开启一个 OPcache 的缓存,因此我们可以

vim php.ini

找到 OPcache 的配置

[Zend Opcache]
zend_extension=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
;opcache end

;xcache
;xcache end

Zend Opcache 使用起来很简单,因为启用之后它会自动运行,Zend Opcache 会自动在内存中缓存预先编译好的PHP字节码,如果缓存了某个文件的字节码,就执行对应的字节码。

如果 php.ini 中配置了 opcache.validate_timestamps 值为0,需要小心,因为 Zend Opcache 将不能觉察 PHP 脚本的变化,必须手动清空 Zend OPcache 缓存的字节码,才能让它发现 PHP 文件的变动。这个配置适合在生产环境中设置为0,但在开发环境会带来不便,我们可以在开发环境中这样配置启用自动验证缓存功能:

opcache.validate_timestamps=1
opcache.revalidate_freq=0

opcache.validate_timestamps 如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。

opcache.revalidate_freq 为 缓存过期时间配置,设置 60 秒后表示脚本 60 秒后才会去更新改动,改为 0则每次修改都能及时生效,或者修改成其它的时间。


一般我们是这样配置 opcache

opcache.validate_timestamps=1    			//生产环境中配置为0
opcache.revalidate_freq=0    					//检查脚本时间戳是否有更新时间
opcache.memory_consumption=64    			//Opcache的共享内存大小,以M为单位
opcache.interned_strings_buffer=16    //用来存储临时字符串的内存大小,以M为单位
opcache.max_accelerated_files=4000    //Opcache哈希表可以存储的脚本文件数量上限
opcache.fast_shutdown=1         			//使用快速停止续发事件

PHP官网中列出了 Zend Opcache 的全部设置:https://www.php.net/manual/zh/opcache.configuration.php

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值