PHP脚本......可以追溯到时间?

gre*_*rep 7 php microtime

不是真的,但我遇到了一个问题,在运行这个脚本的时候曾经在一个蓝色的月亮,我的时间导致负数.这是脚本发生的部分:

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 [...]

  • PHP中那些精彩的设计决策之一,真正让语言成为一种乐趣. (12认同)