Discuz! X3.5 帖子主题内容存储位置
核心结论:帖子正文、标题、作者等绝大部分内容存在 MySQL 数据库;附件图片/文件是存磁盘文件目录。
1、主题、帖子文字内容(数据库)
Discuz X3.5 所有发帖文字全部在数据库,不在网站文件里。
核心数据表
-
pre_forum_thread —— 主题表(帖子主题)
- 存储:主题ID、标题、作者ID、发布时间、浏览数、回复数、板块ID、是否置顶、精华、状态等
- 不存帖子正文内容,只存主题基础信息。
-
pre_forum_post —— 回帖/帖子内容表(最重要)
- 主题的第一篇内容(楼主正文)也在这里,
first=1 代表是主题首帖。
- 字段
message:帖子正文(带 Discuz 自定义 BBCode 代码,不是纯HTML)
- 字段
author、authorid:作者信息
注意:message 里面是 BBCode,不是网页HTML;页面显示的时候程序会把BBCode解析成HTML。
-
pre_forum_post_tableid:帖子分表索引
当帖子数量巨大时,Discuz会自动分表:pre_forum_post_0、pre_forum_post_1……,数据分散到多张post分表,不是全部在 pre_forum_post。
⚠️:你在网站后台看不到原始数据库,需要 phpMyAdmin 或者 Navicat 连接MySQL查看。
2、图片、附件、头像(磁盘文件目录,不在数据库)
文字在数据库,上传的图片、附件、视频文件保存在服务器硬盘目录:
-
附件/帖子上传图片
./data/attachment/forum/
- 帖子上传的图片、压缩包等附件全部在这里;
- 数据库
pre_forum_attachment 表保存附件记录:文件名、文件路径、对应帖子ID;真实文件在磁盘文件夹。
如果只备份数据库,不备份这个文件夹,帖子文字还在,但是图片全部裂图无法显示。
-
用户头像
./data/attachment/avatar/
-
编辑器远程保存图片也会落到 data/attachment/forum
3、其他相关
- 帖子缓存:
./data/cache/,这只是缓存文件,删除后程序会重新生成,不是原始帖子数据,原始数据依然来自数据库。
- 不要误以为网页缓存文件就是帖子源数据,删除缓存不会丢帖子。
备份要点(非常实用)
- 完整备份 DiscuzX3.5 需要两部分
① MySQL数据库备份:保存帖子文字、用户账号、板块设置等;
② 网站文件备份,重点目录:data/attachment/(附件图片)。
只备份数据库:帖子文字还在,图片附件全部丢失;
只备份网站文件:帖子文字、用户账号全部丢失。
简单梳理流程
用户发帖 → PHP接收内容 → 写入MySQL pre_forum_thread(主题)+ pre_forum_post(正文);上传图片写入磁盘 data/attachment/forum,同时在数据库写入附件记录。访问页面时:程序读取数据库BBCode内容,解析BBCode为HTML,再引用磁盘上的图片输出网页。
|