开发者

Find out for how long the script was running for in seconds?

开发者 https://www.devze.com 2022-12-15 02:28 出处:网络
I have a script which runs in a \'while\' cycle. I need to determine for how long the sc开发者_StackOverflowript was running for and if it is over 10 seconds terminate it. The code I wrote returns wei

I have a script which runs in a 'while' cycle. I need to determine for how long the sc开发者_StackOverflowript was running for and if it is over 10 seconds terminate it. The code I wrote returns weird decimal values (one second it might be '5.342...' and other it might be '903.322...'). Can someone tell me how can I achieve that?

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

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


You're tracking microseconds. If you want to see only the seconds, round it
up using round() or ceil().

You might also consider set_time_limit(), which controls how long the script is allowed to run for.

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

You can use register_shutdown_function() to handle any cleanup that is necessary if the script didn't finish in time.


$timeDiff /= 1000;

1000 microseconds is a second, not the other way around


I believe the argument should be true, see http://php.net/manual/en/function.microtime.php

Try:

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

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

精彩评论

暂无评论...
验证码 换一张
取 消