В моем Plesk 11, PHP 5.4.7. Apache / 2.4.3, когда я делаю задания cron, я получаю эту ошибку из файла error.log.
[Tue Mar 19 21:33:18 2013] [warn] [client 88.44.55.66] mod_fcgid: read data timeout in 45 seconds [Tue Mar 19 21:33:18 2013] [error] [client 88.44.55.66] Premature end of script headers: index.php
Поэтому я проверил время выполнения с этим:
echo ini_get('max_execution_time');
Я получил это значение: 1560000
Это не похоже на проблему с тайм-аутом, но я получаю ошибку тайм-аута?
Ответ для будущей ссылки:
Измените /etc/httpd/conf.d/fcgid.conf
с помощью vim.
Измените FcgidIOTimeout 45
на FcgidIOTimeout 600
.
Перезапустите Apache. Затем будет решен быстрый тайм-аут CGI.
Это время ожидания mod_fcgid
, а не таймаут PHP. Взгляните на документацию mod_fcgid
чтобы узнать, как ее изменить, особенно в FcgidIOTimeout
.
Сценарии Cron, если правильно строить, не должны запускаться через apache. Ваша ошибка показывает, что вы используете таймаут, установленный mod_fcgi.
Если вы получаете доступ к нему через http в своем cronjob, то он будет работать как запрос веб-страницы, а затем он может быть затронут таймаутом apache, потому что apache участвует в этом процессе. Вы можете запустить php-скрипт напрямую с помощью абсолютного пути, используя php-интерпретатор для обхода apache