PHP的函数时间跳跃()

caw*_*caw 2 php time timestamp

使用PHP的time()函数的时间戳,我用date()向用户显示当前时间.

格式:H:i => 13:57

但有时似乎有时间飞跃.当我访问该页面时,我的Windows时钟显示为13:40.但我的网站说14:XX.我不知道确切的时间了.

另一个例子:用户访问了"谁在线?"页面 在00:16 列出的用户的最后一次操作时间为00:39.在每次页面加载时,最后一个操作时间将写入数据库.因此,time()函数必须在00:16返回00:39,并且必须将错误的值写入数据库.

怎么会发生这种情况?

非常感谢您的帮助 :)

编辑#1我已将代码缩减为对此问题很重要的部分:

我在serverData.php中将时间戳保存为$ tStamp = time()的新变量,此文件包含在index.php中,其中我向用户显示日期时间('dmY,H:i',$ tStamp) .变量$ tStamp在任何其他行中都不会更改.

编辑#2我网站上的用户在2010-01-21 00:16注意到错误的时间,页面显示00:39很短的时间.我已经查看了日志文件,大约在这个时间内,日志文件中缺少一个完整的小时:

127.0.0.1 - - [20/Jan/2010:23:34:53 +0100] ......

127.0.0.1 - - [20/Jan/2010:23:34:55 +0100] ......

127.0.0.1 - - [21/Jan/2010:00:38:41 +0100] ......

127.0.0.1 - - [21/Jan/2010:00:38:41 +0100] ......

我的主人公布了2010-01-20 00:00-06:00的维护工作.你认为维修被挫败了吗?是否可以在这段时间内第二天进行维护工作?这样的工作会让时间错吗?

编辑#3最后,我有一个来自我的主机的答案:)在给定的时间段内,服务器崩溃了.因此,手表/时钟停止了.就是这么简单,但我没想到服务器崩溃.非常感谢大家!

Bro*_*ell 10

在评论中阅读了所有这个问题和你的回答之后,我可以说这在PHP中成为错误的可能性非常小.PHP time()直接从操作系统中提取,操作系统直接从主板上的硬件时钟中提取.由于您正在使用共享主机,因此如果发生这种情况经常发生问题,您将不得不要求主机查看它.它可能是一个流氓的NTP服务器或进程,它可能是硬件时钟中的某种短缺 - 无法访问服务器日志或物理访问计算机,我所知道的并不是你可以做的很多.