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好像并不是特别好,但是又说不出为什么不好。

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案
4年前 评论
keer (楼主) 4年前
讨论数量: 18
opcache_reset();
4年前 评论
keer (楼主) 4年前
Vanry (作者) 4年前
农村闲散劳动力

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

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

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

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

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

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

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