У меня есть PHP-скрипт, который вызывается с помощью задания cron на моем сервере для запуска загруженных конверсий видео.Он отлично работает для некоторых видео, но когда видео немного больше (например, 21 МБ), я получаю 500 Internal Server Error
и никакого другого выхода.
Я думаю, что это возможно из-за тайм-аутов, поэтому я добавил set_time_limit(9000)
, а также ini_set('max_execution_time', 9000)
, чтобы предотвратить это, но это ничего не решает.
Я выполняю ffmpeg, используя:
$cmdOut = shell_exec ('ffmpeg -y -i [....] 2>&1'); // [....] is the rest of the command, it works fine with other videos, so i assume that it works ok.
echo print_r($cmdOut);
Однако нет выходных данных, и следующие строки не выполняются, поэтому после shell_exec
сценарий прерывается.
Глядя на apache error_log, я вижу следующую строку:
[Wed Jan 12 00:12:46 2011] [error] [client xx.xxx.xxx.xxx] Premature end of script headers: index.php
Но других подсказок нет.Кто-нибудь может мне помочь?
Для целей тестирования я создал этот скрипт PHP:
<?php
set_time_limit(300);
sleep(120);
echo "SLEEP OUT";
?>
Этот скрипт вызывает «500 Internal Server Error», когда я вызываю его из моего веб-браузера,поэтому я предполагаю, что set_time_limit не работает.Если я поставлю sleep (30), он сработает и вернет текст SLEEP OUT.Поэтому вопрос заключается в том, как избежать ошибки тайм-аута для выполнения сценария PHP, выполнение которого занимает 5 или 10 минут ??
ПРИМЕЧАНИЕ. Сервер CentOS работает под управлением Apache и php в качестве модуля FastCGI.