删完runtime/cache/、temp/、data/等磁盘缓存无需重启服务,框架下次请求自动重建;但OPcache和PHP-FPM进程内缓存必须重启PHP-FPM或reload才能生效。

ThinkPHP缓存清理后是否需要重启服务,取决于你清的是哪一层缓存以及当前运行环境——文件缓存删完立刻生效,而OPcache或PHP-FPM进程内缓存必须重启才能释放。
哪些缓存删完不用重启
runtime/cache/、runtime/temp/、runtime/data/ 下的文件属于纯磁盘缓存。删除后下次请求自动重建,【无需重启任何服务】。
用 php think clear --all 或手动 rm -f runtime/cache/* 清掉这些目录,框架下一次访问时就会重新生成对应文件。
注意:如果用了 Redis 作缓存驱动,删本地 runtime 目录完全不影响 Redis 中的数据,得单独执行 Cache::store('redis')->clear() 或用 redis-cli 清 key。
立即学习“PHP免费学习笔记(深入)”;
哪些缓存必须重启服务
以下两类缓存不存硬盘,只驻留在 PHP 进程内存中,删文件没用,必须重启对应服务:
① OPcache 编译缓存:PHP 把 .php 文件编译成 opcode 后缓存在内存里,即使你改了控制器代码,OPcache 不刷新就永远执行旧字节码。
② PHP-FPM 进程级静态变量或单例对象:比如在中间件或服务类里用了 static $data = [],这类数据不会随 runtime 清理而重置,只会随 worker 进程重启才清空。
确认是否启用 OPcache:在 phpinfo() 页面搜索 “opcache”,看到 enabled 才需处理。
对应重启方式
方法一:重启 PHP-FPM(最常用)
systemctl restart php-fpm
或根据版本指定:systemctl restart php8.2-fpm
方法二:平滑 reload(推荐线上使用)
systemctl reload php-fpm —— 不中断已有请求,新请求走新进程
方法三:重启 Web 服务器(仅限 mod_php 模式)
Apache 用户执行 systemctl restart apache2;Nginx 用户 reload 即可,它本身不缓存 PHP 代码
【不要只 kill -USR2 php-fpm 主进程】——该信号触发的是优雅重启,但若配置未重载或子进程卡死,可能无效。
验证是否真生效
清完缓存又重启后,别只信页面显示正常,立刻做两件事:
在控制器里加一行:echo (int)opcache_get_status()['opcache_enabled']; 输出 0 表示 OPcache 已关,1 表示已开且生效
访问一个刚改过的模板页,查看 HTML 源码里是否有你新增的注释或文字——这是检验 temp 编译缓存是否重建的最直接方式



















