我试过 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:
"Returns the current Unix timestamp with microseconds.
This function is only available on operating systems that
support the gettimeofday() system call."
也许这在一定程度上澄清了我的观点。