Узнайте, как долго скрипт работал в секундах?
У меня есть сценарий, который выполняется в цикле "время". Мне нужно определить, как долго выполняется скрипт, и если он превышает 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();
}
}