18.05.2013

Как подцепиться к FastCGI-процессу напрямую

Как известно, telnet'ом тут не пообщаться. На помощь приходит утилита cgi-fcgi

Устанавливаем пакет, в котором она есть. Вариант для Debian:
apt-get install libfcgi0ldbl

У CentOS пакет называется, вроде как, fcgi.


Далее мы можем делать запросы скармливая его утилите cgi-fcgi либо прямо из командной строки либо помещая их в простой советский CGI-скрипт. Формат общения примерно следующий:

cgi-fcgi -bind -connect адрес:порт
Если не передавать никакой запрос или не передать минимально необходимые данные, то вернутся просто стандартные теги:

# cgi-fcgi -bind -connect 127.0.0.1:9000
X-Powered-By: PHP/5.4.4-14Content-type: text/html
Но нам нужно сделать какой-нибудь реальный запрос. Минимальный набор передававаемых переменных составляет:
REQUEST_METHOD - метод HTTP, например GET или POST
SCRIPT_FILENAME - полный путь с скрипту. Например: /var/www/index.php
более полный список стандартных переменных можно посмотреть например в файле /etc/nginx/fastcgi_params или в массиве $_SERVER в PHP.

Самый простой вариант - прямо в командной строке задать все переменные и обратиться к FastCGI-процессу:
# SCRIPT_FILENAME=/var/www/index.php
# REQUEST_METHOD=GET
# cgi-fcgi -bind -connect 127.0.0.1:9000

, где # - это приглашение командной строки и его писать не надо.


Ну и в помощь простейшая команда, которая выступит в качестве мониторинга количества процессов (не забудьте настрить парметр pm.status_path в pool.d/www.conf):
watch SCRIPT_NAME=/fpm-status SCRIPT_FILENAME=/fpm-status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect 127.0.0.1:9000



Комментариев нет:

Отправить комментарий