thinkphp6多应用模式下需分驱动类型清理缓存:文件驱动用php think clear --all或clear:cache,redis驱动按前缀精准删除,标签缓存须调用cache::tag()->clear(),并需重建路由与配置缓存。

ThinkPHP6多应用模式下,每个应用的缓存目录独立分散在runtime/appname/cache/、runtime/appname/view/、runtime/appname/route/等路径中,手动逐个清理极易遗漏或误删,必须按驱动类型和目录结构分层处理才能真正统一清空。
确认当前缓存驱动与多应用配置
先执行php think env查看当前环境,再打开config/cache.php检查'default'值及'stores'中各驱动配置;特别注意cache.default是否指向redis或file,因为不同驱动清理逻辑完全不同。
【多应用模式下,config/cache.php中的store配置可能被appname下的独立配置覆盖,务必进入对应应用目录(如app/admin/config/cache.php)二次核对】
运行php think app:list确认启用的应用列表,避免清理未启用应用的残留缓存目录。
文件驱动缓存:批量清理所有应用的cache/view/route子目录
若确认全部应用均使用file驱动,且未自定义cache_path或view.cache_path,则执行:
php think clear --all
该命令会遍历runtime/下所有子目录,自动识别并清理每个appname下的cache/、view/、route/、data/目录——但log/和temp/会被保留,防止日志丢失或模板编译失败。
如果只想清缓存不碰日志和临时文件,改用:php think clear:cache(TP6.1+支持),它只清理各应用runtime/appname/cache/及其子目录,不触碰view/和route/。
Linux/macOS下可直接执行:rm -rf runtime/*/cache/* runtime/*/view/* runtime/*/route/*,但需确保runtime/下无非应用目录(如common/),否则可能误删。
Redis驱动缓存:按前缀安全清空,避免误伤其他业务
方法一:通过ThinkPHP命令触发驱动原生清理
执行php think cache:clear --type=redis,框架会读取当前应用的Redis配置,连接后执行FLUSHDB。但此操作仅作用于当前应用所配置的Redis库(database参数指定的db),不会影响其他db。
方法二:手动登录Redis,按前缀精准删除
先查配置中prefix字段(默认为think_cache:),再执行:redis-cli -a "密码" --raw keys "think_cache:*" | xargs redis-cli -a "密码" del。这比FLUSHDB更安全,只删带前缀的key,不碰think_session:或第三方业务key。
【若多个应用共用同一Redis实例且prefix相同,此操作将一次性清空所有应用的Redis缓存;如prefix不同(如admin应用用admin_cache:),需分别执行两次】
标签缓存(Tag Cache):必须走代码接口,命令行无效
第一步:确认哪些应用启用了标签缓存
检查各应用的config/cache.php中是否含'tag' => true,以及Cache::tag('xxx')->set()是否在业务代码中被调用。
第二步:编写临时清理脚本
在项目根目录创建clear-tags.php,内容为:
<?php <br>require 'vendor/autoload.php';<br>use think\facade\Cache;<br>// 切换到admin应用上下文<br>think\App::debug(true)->init('admin');<br>Cache::tag('user')->clear();<br>Cache::tag('order')->clear();<br>// 切换到api应用<br>think\App::debug(true)->init('api');<br>Cache::tag('product')->clear();<br>?>
执行php clear-tags.php即可按应用分别清除指定标签。注意:只有file和redis驱动支持标签,memcached不支持。
强制重建所有应用的路由与配置缓存
第一步:清空各应用的路由缓存
执行php think route:clear,框架会遍历所有启用的应用,逐一删除runtime/appname/route/下的route.php和rule.php。
第二步:重建配置缓存
运行php think optimize:config,重新生成runtime/appname/config/下的合并配置文件。这一步不可跳过,否则部分应用可能因配置缓存缺失而报Undefined index: database类错误。
第三步:验证是否生效
访问任意应用的首页,同时执行php think route:list --app=admin和php think route:list --app=api,确认输出正常且无Route not found提示。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











