有时候我们会遇到服务器时间出现问题,导致论坛不能正常使用的问题如下图,下面说一下遇到这种事情的处理方法。

一、服务器时间比标准时间快

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 、不明确慢了多长时间

这种情况不能统一的进行处理。

注意:以上的操作都是通过直接操作数据库完成的,请大家务必在执行前备份操作到的数据表。