我php在gentooLinux 上运行以下小代码片段(php版本5.2.10-pl0-gentoo):
#!/usr/bin/php5
<?
class TestDaemon {
public function __construct(){
while (TRUE){
unset($aDate);
exec("date", $aDate);
print("date(\"d.m.y H:i:s\") yields: ".date("d.m.y H:i:s")." while 'date' yields $aDate[0].\n");
sleep(1);
}
}
}
$oDaemon = new TestDaemon();
?>
Run Code Online (Sandbox Code Playgroud)
产出的产量如下:
date("d.m.y H:i:s") yields: 27.03.14 07:05:27 while 'date' yields Thu Mar 27 07:05:03 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:28 while 'date' yields Thu Mar 27 07:05:04 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:29 while 'date' yields Thu Mar 27 07:05:05 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:30 while 'date' yields Thu Mar 27 07:05:06 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:32 while 'date' yields Thu Mar 27 07:05:07 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:33 while 'date' yields Thu Mar 27 07:05:09 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:34 while 'date' yields Thu Mar 27 07:05:10 UTC 2014.
date("d.m.y H:i:s") yields: 27.03.14 07:05:35 while 'date' yields Thu Mar 27 07:05:11 UTC 2014.
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,大约时间已经过去了.24秒 在另一台机器(相同的操作系统,相同版本的PHP)上,我没有看到这样的偏移.
这种抵消的原因是什么?这是否来自闰秒差异?那么哪个系统给出了正确的时间?为什么不php使用Linux系统时间呢?
此外,在同一系统上使用mysql数据库时,这个时间偏移是否会成为问题的根源?
这看起来像运行/ bin/date的shell被配置为使用"正确"的时区,并且php被配置为使用符合POSIX的时区.现在的差异应该是25秒,但如果tz数据超过两年,那么它将是24秒.有关为什么访问http://www.ucolick.org/~sla/leapsecs/amsci.html并查看第二个情节的图片."右"区域遵循绿线.POSIX区域需要在每个闰秒停止系统时钟,因此它们遵循蓝线的下降楼梯.[编辑以确定哪个使用哪种方法]
| 归档时间: |
|
| 查看次数: |
980 次 |
| 最近记录: |