discuz的发帖逻辑比较复杂,网上找了几篇网站结合着整理下
discuz的数据采集程序,discuz发帖主要涉及几个数据库表
discuz发表主题设计的几个表:(这里列出了主要的几个相关的表)
1、主题表 pre_forum_thread:这个表一个主要数据就是 tid 主题ID
2、post 分表协调表 pre_forum_post_tableid:这里需要获取一个自增的 pid
3、帖子表 pre_forum_post :记录主题pid、fid、tid、title、content等主要信息
4、版块表 pre_forum_forum:这里主要更新版块的主题、帖子数量
5、帖子主题审核数据表 pre_forum_thread_moderate:这个可以根据自己状况决定,并不是必须的(这一步不是必需的)
6、用户统计表 pre_common_member_count:主要是更新用户的主题数量
pre_common_member_count表和pre_forum_forum表两个表中主要修改帖子数据量其中主要设计到以下几个字段:
threads: 版块内的主题数.
posts: 版块内的帖子数.
todayposts: 版块内, 今日发帖的个数. 这个是post的个数, 不是thread的个数.
lastpost: 这个字段比较奇葩, 看名字它是表示本版块最新一个帖子. 但它的值比较有意思, 这是一个字符串, 由四部分组成, 每部分之间用 \t 制表符分割. 第一部分是这个帖子的pid, 第二部分是帖子的标题, 第三部分是帖子的发帖时间, 第四部分是帖子的作者名. 这个字段可能是为了提高论坛首页的性能, 有了他之后,首页就负担轻了很多.
discuz 发帖流程主要分为7个步骤:
第一步:向 主题表 pre_forum_thread 中插入版块ID、用户ID、用户名、帖子标题、发帖时间等信息。
第二步:获取第一步插入表 pre_forum_thread 的数据ID,作为主题ID,即 tid
第三步:向 post 分表协调表 pre_forum_post_tableid 插入一条数据,这张表中只有一个自增字段 pid
第四步:获取 第三步 插入表 pre_forum_post_tableid 的数据ID,作为 pid
第五部:向帖子表 pre_forum_post 中插入帖子相关信息,这里需要注意的是: pid为第四部的pid值,tid为第二步的tid值
第六部:更新版块 pre_forum_forum 相关主题、帖子数量信息
第七步:更新用户 pre_common_member_count 帖子数量信息
discuz发帖过程主要就是以上7个步骤,通过这几个步骤就可以完成对实现discuz的发帖流程,其中设计到一些积分等其他信息的可以自己加上。
discuz 数据库相关信息可以查看:http://faq.comsenz.com/library/database/x25/x25_index.htmdiscuz