Отладка запросов к FastCGI из консоли
13 января 2023 года, 15:25
Обычно протокол FastCGI применяется для общения между веб-сервером и бэкендом. Например, связка nginx и PHP-FPM работает по этому протоколу. Для таких случаев есть типовые конфигурации, всё начинает работать из коробки, и особая отладка не требуется.
Однако как быть, если у вас есть собственный сервис, работающий по протоколу FastCGI (скажем, простая асинхронная очередь через PHP-FPM), и вам нужно его отладить? Как понять, где ошибка, если что-то не работает?
Можно было бы настроить в nginx отдельный location, подключить к нему отлаживаемый сервис и отправлять http-запросы через веб-сервер. Однако есть способ проще, который не требует изменения конфигурации сервисов.
Предположим, у вас есть скрипт, который забирает входные данные из $_POST['formula']
и $_POST['extension']
. Тогда вызвать этот скрипт с данными formula=12345 и extension=svg можно вот так:
user@tau:~$ echo "formula=12345&extension=svg" | sudo -uwww-data \
> CONTENT_TYPE='application/x-www-form-urlencoded' CONTENT_LENGTH=28 \
> SCRIPT_FILENAME=/var/www/.../.../cache_processor.php \
> REQUEST_METHOD=POST cgi-fcgi -bind -connect /var/run/php_fpm.sock
В консоли мы увидим ответ, например, такой:
PHP message: PHP Warning: file_get_contents(...): failed to open stream: No such file or directory in ... on line 88Content-type: text/html; charset=UTF-8
В этом методе используется утилита cgi-fcgi, которая проксирует запрос из консоли к FastCGI.
В прошлый раз я рассказал о своем сервисе, который генерирует для веба картинки с математическими формулами на латехе. Теперь я расскажу, как заставить программное обеспечение (TeX Live, nginx, php-fpm, SVGO) и технологии (HTML, CSS, JS, SVG) работать вместе, чтобы получился такой результат.
2014
Применил на практике прием, когда асинхронная очередь обработки сообщений реализовывается через PHP-FPM по протоколу fastcgi. На удивление, всё заработало сразу, никакой наладки не потребовалось.
2020
Как-то нам нужно было перенести сессии PHP с одного сервера на другой.
2020
Обычно в постах о программировании я пишу об успешных подходах и находках.
2023
Обновил Debian на виртуальном сервере до недавно вышедшей 8 версии (jessie).
2015
Оставьте свой комментарий