Тайм-аут скриптов PHP, чтобы они не убивали мой сервер

Причина, вероятно, заключалась в том, что у меня закончилось место на диске, из-за чего все работало странно. Я в любом случае оставлю этот вопрос на тот случай, если у кого-то еще возникнет аналогичная проблема.

У меня есть несколько PHP-скриптов, которые зависали в течение длительного времени, но, видимо, они не используют много процессорного времени, так как их не убивают. Тем не менее, они не позволяют lighttpd создавать какие-либо процессы PHP, поскольку их максимальное количество уже создано.

Мне известно о set_time_limit, который можно использовать как функцию или поместить в php.ini для управления максимальным временем процессора, которое может запускать скрипт. Я хочу ограничить все сценарии PHP, запускаемые моим веб-сервером (lighttpd), не по времени процессора, а по времени.

Если это важно, это часть PHP из моего файла конфигурации lighttpd.

fastcgi.server = (".php" => ((
 "bin-path" => "/opt/local/bin/php5-cgi",
 "socket" => "/tmp/php.socket" + var.PID,
 "min-procs" => 16,
 "max-procs" => 16,
 "idle-timeout" => 15,
)))

Вот мой статус сервера от lighttpd. Вы можете видеть, что PHP работает намного дольше, чем я ожидал, и вызвал засорение сервера. Как ни странно, похоже, что PHP-процессов больше, чем моих max-procs.

legend
. = connect, C = close, E = hard error
r = read, R = read-POST, W = write, h = handle-request
q = request-start,  Q = request-end
s = response-start, S = response-end
388 connections
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhrhhhhhhhhhhhhhhhhhhhhhhhhrhhhhhhhhhhh
hhhhrhhhhhhhhhhrhrhhhrrhrhhhhhrhhhrhhhhhhrhhhrrrhr
rrhrrrhrhhhhrrhrrhhrrhrrhrrrrrrrrrrrrh

Connections
Client IP:  Read:   Written:    State:  Time:   Host:   URI:    File:
204.16.33.51    0/0 0/0 handle-req  1361    ... (a PHP script)
204.16.33.46    0/0 0/0 handle-req  1420    ... (another PHP script)
... gazillion lines removed ...

Мы будем очень признательны за любые идеи, которые могут помочь мне настроить конфигурацию, за которой мне не нужно постоянно присматривать!

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

Paul Tomblin 17.12.2008 18:20

В скриптах всегда могут быть ошибки, и я просто хотел бы убедиться, что даже если я оставлю свои скрипты запущенными на год, пока я поеду на Марс, все равно все будет работать, когда я вернусь.

Bemmu 17.12.2008 18:22

@Bemmu: Если сценарии написаны хорошо, проблем нет, и все работает. Вы в основном просите сделать вашу машину устойчивой к авариям, потому что у вас нет тяги. Вы решаете неправильный вопрос.

GEOCHET 17.12.2008 18:26
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
4 292
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не уверен, что вы можете сделать это в lighttpd. Однако вы можете настроить скрипт-счетчик, чтобы периодически проверять зависшие процессы и уничтожать их.

Ответ принят как подходящий

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

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
memory_limit = 32M      ; Maximum amount of memory a script may consume (8MB)

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