0

我有以下代码行

$timestamp = '-'.(int)(microtime(true)*1000);

$timestamp被附加到订单 ID 的末尾以使其更加独特,但是,当我在本地 Wamp 服务器(在 Windows 操作系统上)上进行测试时,我得到了这样的值

-166776478
-166701036

作为测试,我在 unix 上的测试服务器上进行了订购,我得到了这样的值

1372722035
1372722471

对于每个我所做的最后一个是打开 2 个 firefox 窗口并几乎同时完成订单(我的本地 wamp 服务器需要更长的时间,因为我没有任何缓存

现在,奇怪的是我期望我本地 Wamp 服务器上的值与测试服务器上的值大致相同

据我了解microtime(),自 Unix 纪元以来的当前 Unix 时间戳记为微秒,因此时区设置不应该有任何影响

我想知道如果 microtime 不在 unix 上运行,它会得到不同的值吗?如果不是,为什么我会得到 2 个非常不同的值

4

1 回答 1

2

我猜发生的事情是,在 Windows 机器上,您正在溢出可以表示为整数的最大值。

检查两个环境中 PHP_INT_MAX 的值 ( echo PHP_INT_MAX;) 这个问题可能与 windows 与 linux 的关系不大,而与 32 位与 64 位的关系更大。

于 2013-07-02T02:54:35.480 回答