Тайм-аут PHP-скрипта или иным образом уничтожен на Apache под CentOS (общий хост)

При попытке запустить скрипт PHP (CentOS, Apache, PHP 5.2), который может занять много времени, он, по-видимому, уничтожается через 45 минут.

PHP-скрипт вызывается из веб-браузера, и в определенных ситуациях он будет выполнять большую работу по обработке почтового ящика POP3 и отправке электронных писем в рамках автоматизированной системы мониторинга.

Запуск PHP-скрипта из командной строки может быть лучшим вариантом, но я хочу понять, что происходит до сих пор.

Я запустил тестовый скрипт, и через 45 минут он, наконец, выдал внутреннюю ошибку сервера (500?).

Где этот предел установлен и что убивает сценарий, если это то, что происходит?

Он работает на общем хосте на Hostgator.com.

3 ответа

Я предполагаю, что вы уже сделали set_time_limit(0) в PHP, чтобы отключить максимальное время выполнения PHP для этого конкретного скрипта? http://nz.php.net/manual/en/function.set-time-limit.php

Если вы еще не пробовали - это, вероятно, ответ - если вы пробовали это - тогда продолжайте читать...

Linux позволяет вам настроить максимальное время выполнения для пользовательских процессов - общие хосты обычно делают это в качестве отказоустойчивого, чтобы уничтожить любые зависшие скрипты (в противном случае вам может потребоваться перезапустить сервер, чтобы убить их - по крайней мере, это должен сделать системный администратор). вручную)

Кажется, я не могу найти информацию, которую видел раньше, - я уверен, что это расширение http://gerardnico.com/wiki/linux/limits.conf

В любом случае, вам нужно будет найти способ ускорить ваш сценарий. Почему для его запуска требуется 45 минут? Можете ли вы разбить его на сегменты? - Ожидание 45-минутного ответа от веб-сервера не очень удобно (что если вы нажмете "Обновить" и запустите свой скрипт несколько раз - или веб-паук нажмет его и сработает, не зная, что... сервер может быть отрицательным) пострадавших?)

Вот с чем вернулась поддержка Hostgator:

На наших общих серверах у нас есть автоматизированные системы мониторинга, которые будут прерывать процессы, основанные на использовании определенных ресурсов, для создания стабильной среды. Как вы обнаружили, одним из ограничений, которые мы установили, является максимальное время выполнения любого пользовательского процесса - 45 минут. Мы можем подтвердить, что если вы запустите этот скрипт в оболочке или через php exec() и т. Д., Он все равно будет уничтожен через 45 минут.

Вы можете обойти это ограничение, выполнив сценарий вне нашей общей среды, например, на VPS или выделенном сервере.

Hostgator имеет максимум 30 секунд выполнения PHP-скрипта.

Переменные Hostgator PHP.ini, которые нельзя изменить

Что касается вашего скрипта, если ваш скрипт выключен и перезапущен, скрипт запускается с того места, где он остановился? Если это так, работа CRON может быть хорошей идеей для вас

Поддержка Hostgator - Cron Jobs

Похоже, что hostgator также не позволяет запускать задания CRON с интервалами менее 15 минут.

Надеюсь это поможет!

Другие вопросы по тегам