我有两个关于微时间精度的“类似”问题。
1)正如PHP在线文档中所建议的那样,为了获得以微秒为单位的时间,我使用了带有 microtime() 函数(循环)的以下代码:
<?php
for ($i = 0; $i < 10; $i++) {
list($usec, $sec) = explode(' ', microtime()); //split the microtime on space
$usec = str_replace('0.', ' ', $usec); // remove the leading '0.' from usec
echo date('YmdHis', $sec) .' '. $usec ."<br>";
}
?>
我得到以下结果:
20140526135144 72254300
20140526135144 72255900
20140526135144 72256500
20140526135144 72257100
20140526135144 72257600
20140526135144 72258100
20140526135144 72258600
20140526135144 72259100
20140526135144 72259600
20140526135144 72260100
就我而言,微意味着 1/100000。那么为什么 microtime 会为“micro”部分返回 8 个整数,而最后两个总是零呢?或者我应该玩一些彩票,因为我很开心:)?
2) Microtime 有时用于生成 uniqid 例如。但是当我运行时:
for ($i = 0; $i < 10; $i++) {
echo microtime()."<br>";
}
我越来越:
0.21820300 1401105400
0.21821000 1401105400
0.21821100 1401105400
0.21821200 1401105400
0.21821300 1401105400
0.21821300 1401105400 // - the same as precursor
0.21821400 1401105400
0.21821500 1401105400
0.21821500 1401105400 // - the same as precursor
0.21821600 1401105400
这怎么可能?我的电脑没有新电脑那么快。这很危险吗?顺便说一句,我正在使用额外的“br”输出,这会使代码运行速度变慢:P。
更新根据评论,这是微日期(真)。
1401106486.9772
1401106486.9772
1401106486.9772
1401106486.9772
1401106486.9772
1401106486.9772
1401106486.9772
1401106486.9772
1401106486.9772
1401106486.9772
引用希腊人 Zorba 的话:彻底的灾难!