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

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

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 、不明確慢了多長時間

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

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