找出脚本在几秒钟内运行了多久?

问题描述:

我有一个脚本运行在''循环。我需要确定脚本运行了多长时间,并且它是否超过10秒才会终止它。我写的代码返回奇怪的十进制值(一秒钟可能是'5.342 ...',其他可能是'903.322 ...')。 有人能告诉我怎么做到这一点?找出脚本在几秒钟内运行了多久?

$timer = microtime(false); 
while(/*...*/) 
{ 
    $currTime = microtime(false); 
    $timeDiff = $currTime - $timer; 
    $timeDiff *= 1000; 

    if ($timeDiff > 10) 
    { 
     //... 
    } 
} 

您正在追踪微秒。如果您只想查看秒数,请使用round()ceil()将它舍入为

您可能还会考虑set_time_limit(),它控制脚本允许运行多长时间。

set_time_limit(10); // allow ten seconds for this script to finish 

您可以使用register_shutdown_function()处理任何清理是必要的,如果剧本没有按时完成。

+0

不会被乘以1000做到了吗? – 2010-01-02 18:44:06

+0

不,乘以1000不一定能确保一个非分数结果:'3.29381 * 1000 = 3293.81' – Sampson 2010-01-02 18:48:58

+0

整点是我不能让这个事情触发一个错误。所以我必须确保脚本在达到10秒后终止。 – 2010-01-02 18:49:43

$timeDiff /= 1000; 

1000微秒是第二,而不是其他方式

相信的说法应该是真实的,看到http://php.net/manual/en/function.microtime.php

尝试:

$timer = microtime(true); 
while(true) 
{ 
    $currTime = microtime(true); 
    $timeDiff = $currTime - $timer; 

    if ($timeDiff > 10) 
    { 
     die(); 
    } 
} 
+0

尽管只有+/-秒,但它不会精确到毫秒。 – asgerhallas 2010-01-02 19:24:38