如何优化我的 Discuz! 让它运行更快?

由于 Discuz! 是使用数据库的应用程序,因此数据库的大小,也就是贴子数目,会员数目等直接影响到各项检索的速度。但您尽可以放心, D iscuz! 经过特别的耐高压设计,确保在任何时候都可以比功能或级别相近的其他产品容纳更多的文章和在线人数是我们始终追求的目标。除去贴 子和在线人数的因素,您可以尝试从以下几个方面入手优化 Discuz! :

      • 1. 在系统设置中常规选项打开页面 Gzip 压缩,在支持 Gzip 压缩的 PHP 系统上可以提高页面打开速度数倍;
      • 2. 将 config.inc.php 中 $tplrefresh 的值置 0 或调大 (最大为 9) 。这是个专家参数,关系到模板刷新的时间检查,如果您不完全了解原理,切勿修改;
      • 3. 定期优化数据表, 如每周或每三天;
      • 4. 选择装有 Zend Optimizer 的空间商, Zend Optimizer 是免费软件,可以在一定程度上提高 PHP 代码的运行速度;
      • 5. 选择装有 Zend Perf ormance Suite 的空间商 (很少见),Zend Performance Suite 是商业软件,由于 Discuz! 是代码与数据库并 重的论坛产品,该软件可以极为巨大的提高 Discuz! 的运行效率。

 

        下面列出几个可能会影响 Discuz! 效率的功能,如果不必要,您可以在系统设置中将其关闭:

 

      • 1 。论坛统计功能;
      • 2 。贴子列表显示加点的图标;
      • 3 。过多的 Smilies 或词语过滤;
        注意: 鉴于 Discuz! 特别设计的体系结构,可能会和其他论坛产品有所不同,没有列出来的其他功能,作者都认为打开与关闭不会对程序效率产生 大的影响,您可放心的使用。 除了上述功能以外,建议您不要设置过多的"用户组","词语过滤"和"Smilies 代码",因为过多的设置会导致检索和替换的过程变得缓慢。当然, 如果您的设置内容数目在默认 (初始安装) 数目的 2 倍以内,都被认为是较合理的范围,不会耗费过多时间。

能否从远程服务器恢复备份数据?

可以的。 Discuz! 的数据备份功能支持远程数据调用,您不需要事先将数据文件下载,只要在数据恢复中写入远程服务器上的备份数据文件名即可,例如 http://www.your.com/forumdata/dz_0108_j3dhsgr-1.sql,如果您是多卷备份,请从起始卷 (第一卷) 开始,逐次输入到最后一卷的 文件名。远程数据调用需要两台主机之间的网络速度较快,否则可能导致超时错误。由于是文件传输,所以并不需要远程数据库连接的权限。

我想修改贴子列表上部的页码显示个数,该如何做?

现在默认值为 10 。修改方法为:打开 ./include/global.func.php,找到 function multi 的行,在下面可以看到 $page = 10; 字样。将 10 修改为您需要的页码个数即可。

为什么不提供管理记录的删除功能?

Discuz! 管理记录用文件保存,为了防止记录被非法删除,自动存留 15 天内的最新记录,这些记录占用不了很多的空间,不需手工删除。 如一定要删除,可通过 FTP 直接删除 ./forumdata/(xxx)log.php 即可。

请给出论坛统计中 Discuz! 论坛活跃指数的计算方法。

论坛活跃指数由以下五项经过系数相乘后相加而成:

        • (每天增加会员数/会员总数 + 每天增加帖子数/帖子总数) * 1500
        • 平均每帖回复数 * 10
        • 人均会员发帖数 * 1
        • 发帖会员占总会员百分比 * 0.1
        • 每个访问者的浏览页数 * 1

如果您有认更合理的计算方法,欢迎和我们联系。

我想在帖子中显示会员的性别该怎么做?

通常您只需要修改 index 模板即可,查找: {lang postnum} $post[postnum] ,在其后面添加:
{lang gender}&nbsp; <!--{if $post['gender'] == 1}-->{lang male} <!--{elseif $post['gender'] }-->{lang female} <!--{else}-->{lang secret} <!--{/if}-->

如何禁止普通会员复制帖子内容?

修改 header 模板,查找&ltbody ,然后后面添加:<!--{if !in_array($groupid,array(1,2,3))}--> oncopy="return false;" oncut=" return false;"<!--{/if}--> 这样可以禁止除版主以上级别的用户的复制动作,如果还想开放某些用户组的复制权限,可以在 1,2,3 后面加其他用户组的 groupid ,之间用英文半角逗号分隔。

怎样对所有会员进行加分奖励?

您可以以登录论坛后台,在用户管理 --> 积分奖惩里面进行奖惩

如何将登陆 cookie 有效期默认设置成 浏览器进程 ?

修改论坛根目录下的 logging.php : 查找 $cookietimecheck = array((isset($_DCOOKIE['cookietime']) ? intval($_DCOOKIE['cookietime']) : 2592000) => 'checked'); ,替换成: $cookietimecheck = array((isset($_DCOOKIE['cookietime']) ? intval($_DCOOKIE['cookietime']) : 0) => 'checked'); 。

怎样让发帖时在主题上自动加上发帖日期?

打开模板 viewthread 。 htm ,搜索: {lang subject}: $thread[subject] ,然后在后面加入:[<!--{eval echo gmd ate("$dateformat", $thread['dateline'] + $timeoffset * 3600)}-->]这样只需要在模板中进行修改就可以了。

管理员密码忘记了怎么办?

可以使用 Discuz! 工具箱中的恢复管理员密码功能进行修改,详情请见 《Discuz! 工具箱》

如何清除论坛所有的登陆 IP 记录?

先关闭论坛,进入"系统设置"里的"数据库","数据升级"中输入: UPDATE `cdb_posts` SET `useip` = '';UPDATE `cdb_members` SET `regip` = '',`lastip` = '' ; 提交即可; 这样会将用户注册时候的 IP 也删除掉。如果不想删除用户注册时候的 IP ,可以将第 2 句换成: UPDATE `cdb_ members` SET `lastip` = '' ;

如何不让游客看到已注册用户的详细资料?

打开 viewpro.php ,查找: $discuz_action = 61; ,在后面添加:if (!$discuz_uid) { showmessage('对不起,游客无权 查看注册会员的资料。');}

我想重置会员的积分和发帖数,使两者相等该怎么做?

如果发 1 贴加 1 分,可以在系统设置的数据库升级或 phpmyadmin 里运行如下语句:UPDATE `cdb_members` SET credit=postnum; , 同理发 1 帖加 2 分就是:UPDATE `cdb_members` SET credit=postnum*2; 。

为什么不提供管理记录的删除功能?

Discuz! 管理记录用文件保存,为了防止记录被非法删除,系统自动存留 500 条最新的记录,并占用不了很多空间,不需手工删 除。如一定要删除,通过 FTP 直接操作 ./forumdata/xxlog.php 即可。

怎样设置才能让游客只能浏览论坛主题列表,不能浏览帖子内容?

您可以进入系统设置编辑游客组的权限详情,禁止其浏览帖子即可。