存储位置
用户上传图片时(route/attach.php:80),文件被保存到 upload/tmp/ 临时目录(缩略图在 upload/tmp/thumb/),文件信息记录到 $_SESSION['tmp_files'],aid 以 _ 开头(如 _0、_1)。
三种命运
1. 正常发帖/回帖 — model/attach.func.php:273 attach_assoc_post($pid)
编辑器中存在的图片/视频:从
tmp/复制到upload/attach/Ym/(按年月分目录),写入bbs_attach表用户从编辑器删除的图片/视频:直接
unlink删除临时文件最后清空
$_SESSION['tmp_files']
2. 用户主动删除 — route/attach.php:269
调用
attach-delete-_N接口,删除临时文件 + 缩略图 + session 记录
3. 没发帖就关掉页面 — ⚠️ 临时文件一直留在 upload/tmp/
session 过期后
tmp_files映射丢失,物理文件成为"孤儿"后台附件管理(admin/route/attach.php 的 batch_delete)只清理
bbs_attach表里的孤儿(已入库但帖子被删的),不管upload/tmp/里的未入库文件
自动清理机制
model/attach.func.php:248 attach_gc():
扫描
upload/tmp/*.*和upload/tmp/thumb/*.*删除 mtime 超过 24 小时(86400 秒) 的文件
由 model/cron.func.php:55 每日计划任务触发(每日 0 点后首次有用户访问站点时执行)
总结
未发布的图片最多在 upload/tmp/ 躺 24 小时,次日计划任务会自动清理掉。如果想立即清理,可以手动删除 upload/tmp/ 下的旧文件,或等当天 0 点后第一次访问触发 cron。
