使用 PHP 的 time() 函数的时间戳,我通过 date() 向用户显示当前时间。
格式:H:i => 13:57
但有时时间似乎会发生跳跃。当我访问该页面时,我的 Windows 时钟显示 13:40。但我的网站说14:XX。我已经不知道具体时间了。
另一个例子:用户访问了“谁在线?”页面。 00:16。列出的用户最后一次操作的时间为 00:39。每次页面加载时,最后操作时间都会写入数据库。因此,time() 函数一定在 00:16 返回了 00:39,并且一定将错误的值写入了数据库。
怎么会发生这种事?
非常感谢您的帮助 :)
Edit #1我已将代码减少到对这个问题很重要的部分:
我在 serverData.php 中使用 $tStamp = time() 将时间戳保存到新变量中,该文件包含在 index.php 中,我在其中使用 date('d.m.Y, H:i', $tStamp) 向用户显示时间。变量 $tStamp 在任何其他行中均未更改。
Edit #2我网站上的用户注意到 2010-01-21 00:16 的时间错误,页面在很短的时间内显示了 00:39。我查看了日志文件,大约此时日志文件中缺少一整小时:
127.0.0.1 - - [20/1/2010:23:34:53 +0100] ...
127.0.0.1 - - [20/1/2010:23:34:55 +0100] ...
127.0.0.1 - - [21/1/2010:00:38:41 +0100] ...
127.0.0.1 - - [21/1/2010:00:38:41 +0100] ...
我的主机宣布2010年1月20日00:00-06:00进行维护工作。您认为维护工作被推迟了吗?难道这个时间段内维修工作是在第二天进行的吗?这样的作品能把时间弄错吗?
Edit #3最后,我得到了我的主机的答复:) 在给定的时间内,服务器崩溃了。因此,手表/时钟停止了。就这么简单,但我没有想到服务器崩溃。非常感谢大家!
阅读了所有这个问题以及您在评论中的回复后,我可以说这是 PHP 中的错误的可能性非常小。 PHP 的time()
直接从操作系统拉取,操作系统直接从主板上的硬件时钟拉取。由于您使用的是共享主机,因此如果这种情况经常发生以致成为问题,您将必须要求您的主机进行调查。它可能是流氓 NTP 服务器或进程,也可能是硬件时钟出现某种短路 — 如果无法访问服务器日志或物理访问计算机,据我所知,您个人无法做很多事情。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)