Тайм-аут PHP-скрипта в Apache, но не в кли - PullRequest
1 голос
/ 29 июля 2011

У меня есть PHP-скрипт, выполнение которого занимает около 30 секунд.При запуске через php cli он успешно завершается (выводит подтверждение и сохраняет соответствующие результаты в файле в локальной файловой системе).Если я запускаю тот же файл через Apache, кажется, что время ожидания или что-то вроде того, примерно через 30 секунд, вместо ожидаемого подтверждающего сообщения, Firefox предлагает мне загрузить пустой файл (другие браузеры обрабатывают его по-другому, но в основном что-топошло не так, как планировалось).Файл, который должен был быть создан в файловой системе, не создан.

Зная, что время выполнения может быть долгим, я установил set_time_limit(400) в начале скрипта.

Какие-нибудь советы, как я могу это отладить?Что может быть причиной истечения времени ожидания скрипта в Apache, но не в cli?

Ответы [ 3 ]

1 голос
/ 01 августа 2011

после прочтения всех ответов и комментариев здесь, я считаю, что ваш сценарий не истекает.

Я думаю, это сбой вашего приложения. процесс apache запускается от имени пользователя с ограниченными правами, которого нет у вас.

возможно, вы записываете файл в папку, к которой у вас нет доступа (под пользователем apache).

Возможно также, что отсутствуют модули php. сравните ваш файл php.ini с apache php.ini.

включить ведение журнала ошибок:

error_log = /tmp/php_error.log
log_errors = 1

возможно, вы находитесь в тестовой среде, вы также можете включить display_errors. но всегда отключайте это в производственном использовании!

см. Журнал, почему php прерывает работу.

вы можете использовать команду su для запуска php-скрипта из cli внутри учетной записи apache. это можно использовать для проверки прав.

0 голосов
/ 29 июля 2011

дополнительно к пределу времени php таймаут cgi может.если вы используете mod_fcgid с вашим apache, вам также нужно увеличить время там.

посмотрите руководство

Я думаю, вам нужно увеличить FcgidIOTimeout 40

0 голосов
/ 29 июля 2011

PHP CLI и PHP через Apache используют разные файлы php.ini.Проверьте файл php.ini на наличие версии Apache и убедитесь, что max_execution_time достаточно высоко, чтобы удовлетворить ваши потребности.

Вы можете выполнить phpinfo(), чтобы получить местоположение используемого в настоящее время файла php.ini.

...