Максимальное время выполнения PHP

В моем 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. Тогда тайм-аут Fast CGI будет устранен.


person trante    schedule 19.03.2013    source источник
comment
Если это задание cron, оно должно запускаться системным crond с использованием исполняемого файла PHP вместо HTTP-сервера.   -  person rid    schedule 19.03.2013
comment
@rid К сожалению, многие люди заканчивают тем, что пишут задание cron, чтобы запросить страницу с помощью wget/curl.   -  person datasage    schedule 20.03.2013


Ответы (3)


Это тайм-аут mod_fcgid, а не тайм-аут PHP. Ознакомьтесь с mod_fcgid документацией, чтобы узнать, как ее изменить, особенно в FcgidIOTimeout.

person rid    schedule 19.03.2013
comment
На всякий случай, если это кому-то поможет: увеличьте значение FcgidIOTimeout в fcgid.conf и перезапустите Apache. CentOS: /etc/httpd/conf.d/fcgid.conf Debian: /etc/apache2/mods-enabled/fcgid.conf - person Friendly Code; 09.03.2016
comment
Исправьте ошибку интернет-сервера с помощью php + curl и ошибки ровно через 40 секунд. Для меня это был правильный ответ. Для CENTOS/RHE (7) файл fcgid.conf можно найти здесь: /etc/httpd/conf.d. Мне нужно добавить следующую строку для устранения внутренней ошибки сервера: FcgidIOTimeout 300 - person Al-Noor Ladhani; 22.07.2021

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

person datasage    schedule 19.03.2013
comment
Cron-скрипты, если они собраны правильно, не должны запускаться через apache. Итак, где мы должны запускать скрипты cron ?? - person Foysal Vai; 18.04.2015
comment
@FoysalVai Через консоль, каталог с чем-то вроде php /path/to/php/script.php - person datasage; 18.04.2015

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

person Rush    schedule 19.03.2013
comment
Вы можете запустить php-скрипт напрямую с абсолютным путем, используя интерпретатор php для обхода apache. Как мы можем это сделать?? - person Foysal Vai; 18.04.2015