Я смотрел эту тему вчера.Как вы, возможно, знаете, fastcgi построен на сокете tcp или unix, ожидающем соединения с определенным протоколом.
Схема запроса следующая: клиент подключается к веб-серверу, который подключается к приложению fastcgi,В зависимости от реализации (спецификации говорят, что веб-сервер передает дескриптор файла, подключенный к веб-клиенту (accept()
sockfd) для приложения fastcgi. Я не видел такого поведения с nginx.
Как вы можетеэксперимент?
- Установить nginx (Конфигурация очень проста, см. документация )
- Скомпилировать php (простая ./configure --enable-fastcgi && makeбудет делать. Займет у меня 30 секунд)
- запуск
php-cgi
на локальный порт 9000 (./sapi/cgi/php-cgi -b 127.0.0.1:9000
) - tcpdump / wireshark вывод
- Теперь остановите php, изапустить простой tcp сервер (например,
nc -l 9000
)
Я нашел спецификацию fcgi , которая очень полезна, если вы хотите написать свою собственную библиотеку. Я не был (пока) в состоянии найти код C / C ++ для клиента в fcgi, но его легко найти для perl.