开启图片模式后,显示的缩略图是在哪个表呢? 例如:threadcover/84/d2/1029.jpg 目录84与D2是怎么确定的.我想肯定是有一个表本着的吧? 要不就是根据什么内容计算出来的? 不可能每次显示都重建缩略图,会累死服务器.... 查到资料说: 没有将路径存在数据表中 只是存了一个cover标识 然后用getthreadcover 函数调取 diy调用的图片也会产生缩略图,你可以设置缩略图的质量 是这样的吗? Discuz!X2 附件分表与主题图片表解析 http://www.discuz.net/forum.php?mod=viewthread&tid=2193011 1.背景: 在 Discuz! X2 中,将原有的1个附件表和1个附件描述表合并,然后分为了 11 个表,在很大程度上加强了论坛对于附件数据量的支持,同时减轻在附件记录非常多的情况下,造成服务器负载比较高的问题。 同时增加了一个主题图片表,如果一个主题的楼主贴包含有图片附件,则将会将这些附件中宽度最大的图写入到这个表。 2.附件表解释:
其中 pre_forum_attachment 表作为保存附件 id 与真实附件信息资料的索引存在。表中存储的数据有 附件id,主题id,帖子id,分表id,下载次数 pre_forum_attachment_{1-9} 表 作为真实的保存附件的数据表,其中的数据包括原来的附件表中所有信息,同时还有原来的附件资料表中的数据,比如附件描述等。这里是由主题的 tid 最后一位来决定附件要保存在哪个分表里面的。 pre_forum_attachment_unused 表保存的是在发表帖子的时候上传了,但是没有真正发帖成功的附件。 pre_forum_threadimage 表保存的是,一个主题中的楼主贴图片附件中,宽度最大的一张图片。这张图片的功能在于 DIY 模块调用帖子模块选择包含图片附件的的时候,显示的图片是直接从这个表查询出来的。同时,这各表中的记录的图片也是作为图片模式的主题封面存在的。 -------------------------------------------- source\function\function_forum.php 中 function getthreadcover($tid, $cover = 0, $getfilename = 0) { global $_G; if(empty($tid)) { return ''; } $coverpath = ''; $covername = 'threadcover/'.substr(md5($tid), 0, 2).'/'.substr(md5($tid), 2, 2).'/'.$tid.'.jpg'; if($getfilename) { return $covername; } if($cover) { $coverpath = ($cover < 0 ? $_G['setting']['ftp']['attachurl'] : $_G['setting']['attachurl']).'forum/'.$covername; } return $coverpath; } 生成主题封面的函数在这里... 用两上MD5生成的目录名...有你的. (责任编辑:机器AI) |