Установите максимальное время выполнения для exec() специально
Возможно ли установить максимальное время выполнения функции exec($command)
? Иногда выполнение моего $command
длится слишком долго, останавливаясь через 1 минуту и представляя эту ошибку:
Неустранимая ошибка: максимальное время выполнения на 60 секунд превышено в C:\xampp\htdocs\files.php в строке 51
Как увеличить максимальное время выполнения команды exec()
?
if (allow()) {
exec($command);
if (file_exists($file)) {
//exec($makeflv);
echo '<script language="javascript" type="text/javascript">window.top.window.aviout(1);</script>';
} else {
echo $error;
}
} else {
echo $error;
}
Ответы
Ответ 1
См. http://php.net/manual/en/function.set-time-limit.php
set_time_limit($seconds)
Если $second
установлено на 0
, лимит времени не наложен. Обратите внимание, что вы должны быть осторожны с удалением ограничения по времени. Вы не хотите, чтобы бесконечные петли медленно ели все серверные ресурсы. Высокий предел, например. 180
лучше, чем без ограничений.
В качестве альтернативы вы можете отрегулировать настройку времени только для определенных блоков кода и сбросить ограничение по времени после выполнения критического кода времени, например.
$default = ini_get('max_execution_time');
set_time_limit(1000);
... some long running code here ...
set_time_limit($default);
Ответ 2
вы можете использовать ini_set()
следующим образом:
ini_set('max_execution_time', 0);
Установка значения 0 приведет к тому, что ваш script будет работать вечно в соответствии с документацией по ini-директиве.
Ответ 3
В .htaccess
вы можете установить следующие значения:
php_value max_execution_time 1000000
php_value max_input_time 1000000
Вы также можете попробовать это в верхней части PHP script:
set_time_limit(0);