PHP максимальное время выполнения превышено - PullRequest
0 голосов
/ 22 января 2020

Интересно, есть ли способ изменить максимальное время выполнения, кроме php .ini, из-за проблем со сценариями, которые требуют много времени для выполнения.

Я хотел заставить завершение через максимальное время выполнения и установить его значения около 30 с. Время выполнения скрипта было значительно превышено. Не могу понять, КОГДА точно сценарий был выключен из-за тайм-аута шлюза браузера.

Я знаю, что после тайм-аута шлюза скрипт все равно был прерван (в противном случае я ожидаю записи протокола), но даже при "ini_set ('max_execution_time', 2);" браузер достигает тайм-аута шлюза. ДОЛЖНА быть опция из php для регулирования времени выполнения.

Серверная ОС работает на Ubuntu, и я знаю о httpd.conf или appache2.conf, но, похоже, нет параметров, которые нужно установить для сценария php.

1 Ответ

1 голос
/ 22 января 2020

Время ожидания скрипта может быть установлено в самом скрипте следующим образом:

 set_time_limit ($seconds)
 ini_set('max_execution_time', $seconds);

Однако ваша конфигурация PHP может ограничивать то, что вы можете и не можете установить из скрипта. Подробнее о как увеличить время ожидания сценария

Если вы хотите sh контролировать и завершать длинные сценарии, лучше реализовать это явно, например,

$executionStartTime = microtime(true);
$timeLimit = 60*5*1000; // 5 minutes
while($whatever)
{
    somethingThatTakesALongTime();
    if (microtime(true) - $executionStartTime > $timeLimit)
    {
        throw new Exception("Your loop exceeded the time limit");
    }
}
...