不同服务器上的不同时间戳

时间:2014-10-16 19:38:56

标签: php

我在两个不同的服务器上运行这个简单的php语句:

echo time();

第一台服务器的date();函数返回:2014年10月16日15:36:11 EDT 2014年 第二个服务器的date();函数返回:Thu Oct 16 19:36:59 UTC 2014

两台服务器上的时间戳正好关闭了17秒。我知道时间戳可能会有所不同,具体取决于服务器的时区秒数。但即使一台服务器在EDT上而另一台服务器在UTC上,差异究竟是17秒呢?

4 个答案:

答案 0 :(得分:1)

简单的答案是:服务器的时间设置不同。服务器不会神奇地知道时间:它们需要由某人设置,或者有服务(例如ntp)来改变时间。

其中一个服务器(或两者)未正确设置。就像一块慢手表。

答案 1 :(得分:1)

您的一个或两个服务器似乎没有将其时钟同步到相同的网络时间协议( NTP )服务器。

如果两台服务器同步到 NTP 服务,它们都应报告相同的时间,从而允许时区差异。

您没有提及您正在运行的操作系统。在各种* nix风格中,您需要定期运行 ntpdate 来同步您的时间。有些人有一个计划的任务,每周或每天一次这样做。我已经看到它每小时完成一次。

NTP.org是了解 NTP 服务的更多信息。

答案 2 :(得分:0)

您需要为应用程序设置时区,因此无论服务器如何,所有页面都是相同的。见http://php.net/manual/en/function.date-default-timezone-set.php

date_default_timezone_set('America/Los_Angeles');

下面是supported timezones

的列表

答案 3 :(得分:0)

您可以通过修改.htaccess文件来修复它

php_value date.timezone" Europe / Berlin"

你可以改变""欧洲/柏林"到你想要的任何时区如America / Los_Angeles等。一旦你添加它将显示相同的时区。无论你是哪个服务器。

以下是您可以从http://php.net/manual/en/timezones.php

中选择的受支持时区列表