php字节码,php字节码缓存之opcache

PHP5.5 以后官方自带了一个组件叫 Zend Opcache,具体可以参看官方文档(https://www.php.net/manual/zh/book.opcache.php)。开启此扩展后可以提高 PHP 的执行效率。

Opcache是字节码缓存,PHP在被编译的时候,首先会把php代码转换为字节码,字节码然后被执行。

php文件第二次执行时,同样还是会重新转换为字节码,但是很多时候,文件内容几乎是一样的,比如静态HTML文件,生成后内容许久都不会改变,用户访问请求直接由服务器读取响应给客户端浏览器。都不用经过PHP进行解析构建了。

内存中的字节码数据,可以直接缓存进行二次编译。这样程序就会快一些,cpu的消耗也少了。

(这里字节码 就是 opcode)

在配置中有 2 个配置很重要,需要重点关注

opcache.validate_timestamps=0;

opcache.revalidate_freq=60;

validate_timestamps 用于验证是否要重新生成缓存脚本, 如果设置为 0(性能最佳),需要手动在每次 PHP 代码更改后手动清除 OPcache。 如果此值为 0,那么 revalidate_freq 将失去作用。

revalidate_freq 用于控制 opcache 多久生成一次缓存字节码,默认 60s。所以一般我们在开发环境中将上面两个值配置为

opcache.validate_timestamps=1;

opcache.revalidate_freq=1;

或者干脆直接关闭 opcache。

上面提到了,如果将 validate_timestamps 配置为 0 以后,我们每次部署 PHP 的时候默认是不会自动生成缓存。

生产环境解决方案1

服务器安装宝塔面板webhook,代码提交到码云,然后触发码云的钩子,码云钩子在触发宝塔webhook,宝塔webhook通过执行shell脚本,拉取仓库代码,然后在重启对应php版本的php-fpm

#!/bin/sh

WEB=/www/wwwroot/youpinhui.guanhuaitong.com/

cd $WEB && /usr/bin/svn update --username   613154514@qq.com   --password  123456  --no-auth-cache

kill -USR2    `cat  /www/server/php/73/var/run/php-fpm.pid`

方案2

利用php函数opcache_reset(),大概实现方案就是写个接口,然后在代码更新完毕之后,调用这个接口,接口去实现opcache_reset()这个方法即可。

推荐一个opcache单页面面板,只有一个页面放到web站点根目录就可以访问了,生产环境建议自己增加访问权限。

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

0b587078abe761a58612c34a33bdc969.png

版权声明:若无特殊注明,本文皆为《菜鸟站长》原创,转载请保留文章出处。

本文链接:php字节码缓存之opcache - https://www.wlphp.com/?post=253

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值