0

我有一个在“ while ”循环中运行的脚本。我需要确定脚本运行了多长时间,如果超过 10 秒就终止它。我写的代码返回了奇怪的十进制值(一秒钟可能是 '5.342...' 而其他可能是 '903.322...')。有人可以告诉我如何实现这一目标吗?

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

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

3 回答 3

2

您正在跟踪微秒。如果您只想查看秒数,请
使用round()或将其四舍五入ceil()

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

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

如果脚本没有及时完成,您可以使用它register_shutdown_function()来处理任何必要的清理。

于 2010-01-02T18:43:29.393 回答
1
$timeDiff /= 1000;

1000 微秒是一秒,而不是相反

于 2010-01-02T18:45:01.980 回答
1

我相信这个论点应该是真的,见http://php.net/manual/en/function.microtime.php

尝试:

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

   if ($timeDiff > 10)
   {
      die();
   }
}
于 2010-01-02T19:22:26.910 回答