2013-03-19 3 views
2

В моем Plesk 11, PHP 5.4.7. Apache/2.4.3, когда я делаю задания cron, я получаю эту ошибку из файла error.log.Максимальное время выполнения PHP

[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 будет разрешен.

+0

Если это задание cron, оно должно управляться «crond» системы, используя исполняемый файл PHP вместо HTTP-сервера. – rid

+0

@rid К сожалению, многие люди заканчивают тем, что пишут задание cron, чтобы запросить страницу с wget/curl. – datasage

ответ

8

Это тайм-аут mod_fcgid, а не таймаут PHP. Взгляните на mod_fcgid documentation, чтобы узнать, как его изменить, особенно на FcgidIOTimeout.

+1

На всякий случай это помогает любому: Увеличьте значение FcgidIOTimeout в файле fcgid.conf и перезапустите Apache. CentOS: /etc/httpd/conf.d/fcgid.conf Debian: /etc/apache2/mods-enabled/fcgid.conf –

1

Если вы получаете доступ к нему через http в своем cronjob, то он будет работать как запрос веб-страницы, а затем он может быть затронут таймаутом apache, потому что apache участвует в этом процессе. Вы можете запустить php-скрипт напрямую с помощью абсолютного пути с использованием php-интерпретатора для обхода apache

+0

Вы можете запустить скрипт php напрямую с помощью абсолютного пути, используя php-интерпретатор для обхода apache Как мы можем это сделать ?? –

5

Сценарии Cron, если правильно построить, не должны запускаться через apache. Ваша ошибка показывает, что вы используете таймаут, установленный mod_fcgi.

+0

Сценарии Cron, если правильно строить, не должны запускаться через apache. Итак, где мы должны запускать cron-скрипты ?? –

+0

@FoysalVai Через консоль, каталог с чем-то вроде 'php/path/to/php/script.php' – datasage

Смежные вопросы