不是真的,但我遇到了一个问题,在运行这个脚本的时候曾经在一个蓝色的月亮,我的时间导致负数.这是脚本发生的部分:
public function execute()
{
$time1 = microtime();
foreach($this->tables as $table)
{
if($this->buildQuery($table))
{
if($this->submitQuery($table))
{
$time2 = microtime() - $time1;
echo "Sync Successful({$time2}s).. $table <br /> \n";
//log
}
}
else echo "No data to sync in $table";
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所怀疑的那样......从第一次减去第二次并粗略估计过程花了多长时间应该没有错.但是..如果我运行足够多次,有时结果将打印出以下内容:
Sync Successful(0.062936s).. users
Sync Successful(-0.86901s).. profile
Sync Successful(-0.798774s).. groups
Sync Successful(-0.718851s).. phonebook
Sync Successful(-0.711768s).. products
No data to sync in locations
Run Code Online (Sandbox Code Playgroud)
这是非常罕见的,但这是我上一次结果的确切输出.所以我的问题是:
这怎么可能?导致"负面",这显然不应该发生..
我该怎么做才能避免这种情况?有没有更好的方法来解决这个问题?是microtime()不可靠?
有人能借给我1981年的DeLorean DMC-12能够达到88 mp/h吗?
Gum*_*mbo 14
您假设数据类型错误.在手动页microtime上写着:
默认情况下,
microtime()返回"msec sec"[...] 形式的字符串
因此,您实际上只减去msec值,因为在实际减法发生之前,两个字符串都会转换为数字.
使用microtime(true)获得的浮点值:
如果get_as_float设置为TRUE,则
microtime()返回一个float [...]