6

我试过 Google、php.net 和 php mailinglist 的档案,但我找不到我要找的东西。也许这是显而易见的,或者也许没有人对此感到好奇......

多年来,我一直使用 microtime() 来获取包括微秒在内的当前时间。然而,有人指点我手册页上的一句话:“这个函数只在支持 gettimeofday() 系统调用的操作系统上可用。”

PHP 的 gettimeofday() 暗示了同样的情况:“这是 gettimeofday(2) 的接口。”

但是......什么样的系统没有这个系统调用可用?一些谷歌搜索提供了许多 C 程序员试图在 Windows 上的 C 中获得 gettimeofday() 实现,因为它似乎不包含它。但是 PHP 的 microtime() 和 gettimeofday() 似乎在 Windows 上工作得很好(至少我可以到达的盒子)。此外,我似乎无法在网络上的任何地方找到似乎在调用之前检查 microtime() 或 gettimeofday() 是否存在的 PHP 代码,而且必须有很多 PHP 程序员在 Windows 上工作盒子那么...

我是否应该忽略手册中的这句话并相信这两个功能始终可用?或者是否有另一种跨平台的方式来获取系统时间,包括微秒,而不使用 microtime() 或 gettimeofday()?或者这两个函数会一直存在,但如果没有可用的 gettimeofday() 系统调用,就不给我微秒?

编辑1:

http://www.php.net/microtime

"Returns the current Unix timestamp with microseconds.
This function is only available on operating systems that 
support the gettimeofday() system call."

也许这在一定程度上澄清了我的观点。

4

2 回答 2

1

根据消息来源, PHP 有自己gettimeofday的 Windows 实现。但是没有其他gettimeofday可用的端口。所以除了基于 UNIX 的系统和 Windows 之外,任何其他操作系统都不能使用microtime()

于 2011-08-12T13:41:51.513 回答
0

我在 windows 和 linux 上都进行了广泛的开发,并且在这两个平台上都运行了有效的 PHP 应用程序。我从来没有意识到这个问题,这对我来说从来都不是问题。

如果你到达它,我会认为这是一座跨越的桥梁。很多时间和精力可以用于为我认为不成问题的问题寻找解决方案。我建议您忽略手册中的句子,直到这实际上成为您的问题,而不是在可能发生的情况下浪费资源。

既然您已经让我意识到了这个问题,我将遵循我自己的建议并忘记它。

于 2011-08-11T13:18:57.043 回答