PHP 开启 Opcache 后如何优雅地部署 PHP 代码?

项目不局限于laravel。

比如一个cms系统,我在php.ini中开启opcache后,并且将opcache.validate_timestamps=0目的在于让php不检查缓存文件的变动。

但是这个时候有个问题,我们部署代码的时候就是通过git钩子执行的。类似

cd /www/myproject
git reset --hard origin master
git pull origin master

然后这样的话测试提交了代码并且部署了以后,线上代码依然是旧的。所以我执行了下
/etc/init.d/php-fpm reload就生效了。但是我总觉得重启php-fpm好像并不是特别好,但是又说不出为什么不好。

想请教下大家,一般线上都是如何解决这个问题的呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
5年前 评论
keer (楼主) 5年前
讨论数量: 18
opcache_reset();
5年前 评论
keer (楼主) 5年前
Vanry (作者) 5年前
农村闲散劳动力

opcache_reset();但是注意了 这个函数是强制清楚所有cache 所以 如果并发较高的系统 不能直接这么搞 还有就是 它有两个清除模式, cli下只能清除cli的cache fpm的话 必须通过fpm请求方式清除才行

5年前 评论
keer (楼主) 5年前
农村闲散劳动力 (作者) 5年前
农村闲散劳动力 (作者) 5年前
农村闲散劳动力 (作者) 5年前
keer (楼主) 5年前
Hachiko 5年前
5年前 评论
keer (楼主) 5年前

其实这个 opcache_reset() 可以通过命令行调用

php -r "opcache_reset();"
5年前 评论
keer (楼主) 5年前

官方推荐的就是 fpm reload 吧,直接写到 CI 发布脚本中就行了,哪里不优雅了?

5年前 评论
keer (楼主) 5年前
游离不2 5年前
yzbfeng 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!