有時候我們會遇到伺服器時間出現問題,導致論壇不能正常使用的問題如下圖,下面說一下遇到這種事情的處理方法。

一、伺服器時間比標準時間快

1 、明確快了多長時間

UPDATE cdb_members     SET lastpost=lastpost-時間段 WHERE lastpost>UNIX_TIMESTAMP();
UPDATE cdb_searchindex SET dateline=dateline-時間段 WHERE dateline>UNIX_TIMESTAMP();

這兩條 SQL 分別解決伺服器時間比標準時間快導致的使用者不能發帖、不能搜尋的問題,「時間段」 為伺服器比標準時間提前的時間段,比如伺服器比標準時間快了一個小時,這裡的時間段就是 3600 。

UPDATE cdb_threads SET dateline=dateline-時間段 WHERE dateline>UNIX_TIMESTAMP();
UPDATE cdb_threads SET lastpost=lastpost-時間段 WHERE lastpost>UNIX_TIMESTAMP();
UPDATE cdb_posts   SET dateline=dateline-時間段 WHERE dateline>UNIX_TIMESTAMP();

這三條分別解決引起的主題發表時間、主題最後回覆時間、帖子發表時間問題。

2 、不明確快了多長時間

UPDATE cdb_members SET lastpost=unix_timestamp() WHERE lastpost>UNIX_TIMESTAMP();
UPDATE cdb_searchindex SET dateline=unix_timestamp() WHERE dateline>UNIX_TIMESTAMP(); 

這兩條 SQL 分別解決伺服器時間比標準時間快導致的使用者不能發帖、不能搜尋的問題。

二、伺服器時間比標準時間慢

1 、明確慢了多長時間

update cdb_threads set dateline=dateline+時間段 where tid> 主題 id;
update cdb_threads set lastpost=lastpost +時間段 where tid> 主題 id;
update cdb_posts set dateline=dateline +時間段 where pid> 帖子 id;

這三條分別解決引起的主題發表時間、主題最後回覆時間、帖子發表時間問題。 SQL 中的主題 id 、帖子 id 可以透過對比 cdb_threads 中的 tid 和 dateline 、 cdb_posts 表中 pid 和 dateline 得到。

2 、不明確慢了多長時間

這種情況不能統一的進行處理。

注意:以上的操作都是透過直接運算元據庫完成的,請大家務必在執行前備份操作到的資料表。