Узнайте, как долго скрипт работал в секундах?

У меня есть сценарий, который выполняется в цикле "время". Мне нужно определить, как долго выполняется скрипт, и если он превышает 10 секунд, прекратить его. Код, который я написал, возвращает странные десятичные значения (одна секунда может быть "5,342...", а другая - "903,322..."). Может кто-нибудь сказать мне, как я могу этого достичь?

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

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

3 ответа

Решение

Вы отслеживаете микросекунды. Если вы хотите увидеть только секунды, округлите его
до использования round() или же ceil(),

Вы могли бы также рассмотреть set_time_limit(), который контролирует, как долго разрешено запускать скрипт.

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

Ты можешь использовать register_shutdown_function() обрабатывать любую очистку, которая необходима, если сценарий не завершился вовремя.

$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();
   }
}
Другие вопросы по тегам