我的知识记录

PbootCMS缓存如何清理runtime文件夹下经常爆满_日志_静态缓存_自动清理

PbootCMS的runtime目录爆满,原因分析和清理方案。

runtime目录结构: - runtime/cache/:模板缓存和数据缓存。 - runtime/html/:静态页面缓存(开启html_cache后)。 - runtime/log/:运行日志(debug或log开启时)。 - runtime/temp/:临时文件。 - runtime/session/:session文件(如果配置文件存储)。

爆满原因:

1. 日志文件(最常见) - config.php里`'debug' => true`或`'log' => true`。 - 每次访问都写日志,访问量大时日志快速增长。 - 日志文件不自动轮转,越积越大。 - 单个日志可能几个G。

2. 静态缓存 - 开启`'html_cache' => true`,每个页面生成静态HTML。 - 页面多(几万篇文章)时,静态文件数量巨大。 - 静态缓存过期后不自动删除,只覆盖。 - 图片站、资讯站容易爆满。

3. 模板/数据缓存 - 正常情况不大,几百M以内。 - 网站栏目多、模板复杂时可能大。 - 不清理也不会无限增长。

4. session文件 - session存储方式设为file,大量访客session文件不清理。 - PHP的session.gc_probability配置低,垃圾回收不触发。

5. 临时文件 - 上传临时文件、导出临时文件没清理。 - 一般不大。

手动清理:

方法一:后台清理 - 系统配置→缓存管理→清空全部缓存。 - 清cache和html,不清log。 - log需要手动删或命令行删。

方法二:命令行清理(彻底) ``` # 清理所有缓存 rm -rf /www/wwwroot/域名/runtime/cache/* rm -rf /www/wwwroot/域名/runtime/html/* rm -rf /www/wwwroot/域名/runtime/log/* rm -rf /www/wwwroot/域名/runtime/temp/* # 保留session目录结构 rm -rf /www/wwwroot/域名/runtime/session/* ``` - 多站点写多行或循环。 - 清理后第一次访问稍慢(重新生成缓存)。

方法三:宝塔文件管理器 - 进入runtime目录,全选删除。 - 或选中cache、html、log子目录删除。 - 适合不熟悉命令行的用户。

从源头解决:

1. 关闭日志(生产环境必须) config.php: ``` 'debug' => false, 'log' => false, ``` - 关闭后runtime/log不再增长。 - debug模式还会显示错误信息,有安全风险,生产必须关。

2. 静态缓存策略 - 资讯站内容更新频繁,关闭html_cache或设短有效期(300秒)。 - 企业站内容稳定,开html_cache,有效期3600秒。 - 静态缓存目录定期清理(计划任务)。 - 页面特别多的站不建议开静态缓存,用Redis缓存更省空间。

3. 用Redis替代文件缓存 config.php: ``` 'cache_type' => 'redis', 'redis_host' => '127.0.0.1', 'redis_port' => 6379, 'redis_password' => '', ``` - 缓存存在内存,自动过期,不占磁盘。 - 大站点推荐,速度也更快。 - 需要安装Redis和PHP redis扩展。

4. session用Redis或数据库 - 不存文件,不占磁盘。 - config.php配置session存储方式。

5. 日志轮转 - 必须开日志时,用logrotate轮转: ``` # /etc/logrotate.d/pbootcms /www/wwwroot/域名/runtime/log/*.log { daily rotate 7 compress missingok notifempty } ``` - 每天轮转,保留7天,压缩旧日志。

自动清理(计划任务): 宝塔→计划任务→Shell脚本→每天凌晨3点: ``` # 清理7天前的日志 find /www/wwwroot/域名/runtime/log -name "*.log" -mtime +7 -delete # 清理过期静态缓存 find /www/wwwroot/域名/runtime/html -type f -mtime +1 -delete # 清理临时文件 find /www/wwwroot/域名/runtime/temp -type f -mtime +1 -delete echo "$(date) PbootCMS缓存清理完成" ``` - 用find按时间删,不删正在用的缓存。 - 比rm -rf安全,不影响网站运行。

监控磁盘: ``` du -sh /www/wwwroot/域名/runtime du -sh /www/wwwroot/域名/runtime/* ``` - 看哪个子目录占空间大,针对性处理。 - 宝塔监控磁盘使用率,超过80%告警。 - 写脚本告警: ``` SIZE=$(du -sm /www/wwwroot/域名/runtime | awk '{print $1}') if [ $SIZE -gt 500 ]; then echo "runtime超过${SIZE}MB" # 发邮件/微信通知 fi ```

清理后验证: - `df -h`看磁盘空间释放。 - 访问网站,页面正常(缓存重新生成)。 - 后台登录正常。 - 发篇测试文章,确认读写正常。

runtime爆满90%是日志没关,生产环境关debug和log是第一步。配合计划任务定期清理和Redis缓存,磁盘问题彻底解决。

PbootCMS缓存如何清理runtime文件夹下经常爆满_日志_静态缓存_自动清理

标签:

更新时间:2026-08-26 18:12:09

上一篇:宝塔面板外网访问配置全攻略:安全组、端口、域名、SSL与IP白名单

下一篇:修改默认登录网站密码:后台、数据库、服务器、FTP全账号密码管理