如何最佳化我的 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 即可。

怎樣設定才能讓遊客只能瀏覽論壇主題列表,不能瀏覽帖子內容?

您可以進入系統設定編輯遊客組的許可權詳情,禁止其瀏覽帖子即可。