Превышение времени ожидания скриптов PHP, чтобы они не убивали мой сервер - PullRequest
0 голосов
/ 17 декабря 2008

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

У меня есть несколько 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 ...

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

Ответы [ 2 ]

1 голос
/ 17 декабря 2008

Вам, вероятно, лучше всего отредактировать файл 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)
1 голос
/ 17 декабря 2008

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

...