不是真的,但我遇到了一个问题,即在运行这个脚本的时候曾经在一个蓝色的月亮中,我的时间导致负数.这是脚本发生的部分:
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"; } }
正如你所怀疑的那样……从第一次减去第二次并粗略估计过程花了多长时间应该没有错.但是..如果我运行足够多次,有时结果将打印出以下内容:
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
这是非常罕见的,但这是我上一次结果的确切输出.所以我的问题是:
这怎么可能?导致“负面”,这显然不应该发生..
我该怎么做才能避免这种情况?有没有更好的方法来解决这个问题? microtime()不可靠吗?
有人能借给我1981年的DeLorean DMC-12能够达到88 mp / h吗?
您假设数据类型错误.
manual page of
microtime
读取:
By default,
microtime()
returns a string in the form “msec sec
” […]
因此,在实际减法发生之前,您实际上只将msec值减去strings are converted to numbers.
使用microtime(true)获取浮点值:
If get_as_float is set to TRUE,then
microtime()
returns a float […]