找回密码
 立即注册

[DISCUZ相关] 解决编辑帖子后分类信息数据表内容不同步问题

[复制链接]
发表于 2022-6-8 15:29:39 | 显示全部楼层 |阅读模式
Discuz!是一个强大的论坛系统,现在的dz已经更新到了X3.2版本,其功能可以说是网站系统中最为完善的,无论是论坛还是门户等
但圣人也有犯错的时候,最近开发dz的时候涉及到使用dz的分类信息,但是我发现dz的分类信息机制很不完善,发布分类信息的时候两个表同时储存,但是读取数据的时候是从 forum_typeoptionvar 表里取出,而这张表集合了所有分类信息的变量值,如果分类信息的数据量很大,那肯定会影响性能(关于怎么修改,我之后再发布)已经发布的分类信息,从新编辑修改后发布 数据只会更新到   forum_typeoptionvar  而forum_optionvalue表的数据不会更新,依然是最开始发布的内容
现在我先说下 关于 forum_typeoptionvarforum_optionvalue两张表在编辑帖子发布后 分类信息不能同步更新问题!
1、首先找到以下文件source/class/extend/extend_thread_sort.php
2、大约在121 行代码处:
  1. C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('value' => $value, 'sortid' => $parameters['sortid']), false, false, $optionid);
  2. }

  3. if($typeexpiration) {
  4.                     C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('expiration' => (TIMESTAMP + $typeexpiration)), false, false, null, $parameters['sortid']);
  5. }
复制代码
修改为:
  1. C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('value' => $value, 'sortid' => $parameters['sortid']), false, false, $optionid);
  2.                                         $identifier = DB::result(DB::query("SELECT identifier FROM ".DB::table('forum_typeoption')." WHERE optionid = ".$optionid));
  3.                                         DB::query("UPDATE ".DB::table('forum_optionvalue'.$parameters['sortid'])." SET $identifier='$value',dateline=".TIMESTAMP." WHERE tid=".$this->thread['tid'], 'UNBUFFERED');
  4.                                 }

  5.                                 if($typeexpiration) {
  6.                                         C::t('forum_typeoptionvar')->update_by_tid($this->thread['tid'], array('expiration' => (TIMESTAMP + $typeexpiration)), false, false, null, $parameters['sortid']);
  7.                                         DB::query("UPDATE ".DB::table('forum_optionvalue'.$parameters['sortid'])." SET expiration=".(TIMESTAMP + $typeexpiration)." WHERE tid=".$this->thread['tid'], 'UNBUFFERED');
  8.                                 }
复制代码
这样修改完成后,就能实现在修改分类信息时同步修改forum_typeoptionvar和forum_optionvalue两张数据表内容,以便之后对forum_optionvaluen数据表内数据的远程调用!
 楼主| 发表于 2022-6-8 16:41:14 | 显示全部楼层
实测没有解决问题
回复

使用道具 举报

Archiver|手机版|小黑屋|如风追月 ( 皖ICP备06005222号 )

GMT+8, 2025-1-23 02:05 , Processed in 0.039796 second(s), 13 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表