Назад | Перейти на главную страницу

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

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

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

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

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

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

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

Я предполагаю, что вы уже сделали 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 имеет максимальное время выполнения PHP-скрипта 30 секунд.

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

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

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

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

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