Помогите, пожалуйста, разобраться как работает fastcgi. В начале был протокол cgi. Стандартный поток вывода интерпретатора направлялся веб-серверу, а тот формировал http-запрос. То есть, если мы напишем echo 'hello', сервер перехватит вывод, который бы в обычном случае появился на экране и сделает свой запрос. В википедии написано, что fastcgi это улучшение протокола cgi и он работает через сокеты. Здесь мне непонятно. Я посмотрел, как пишутся fastcgi приложения на c++ или perl и там в коде явно открывается сокет. Как я понимаю, на веб-сервере открыт прослушивающий сокет. А как дело обстоит с php? Если мы настроим fastcgi, мы же так же можем написать echo 'hello', но запрос уже пойдет через сокеты. Кто эти сокеты открывает? Сам интерпретатор? (Вместо вывода в стандартный поток, открывает сокет и направляет данные туда?)
php сам по себе не умеет fast cgi, для этого есть посредники тип php-fpm, где вся низкоуровневая фигня типа возни с сокетами сделана за тебя. На уровне приложения обычно вообще без разницы, как работает php, как модуль, как cgi, как fast-cgi, очень редко бывает, что нужно написать код, зависящий от этого.
Именно. Интересно стало, как это работает внутри. Спасибо за ответ. Нашел еще: "Когда поток вывода покидает область PHP, чтобы попасть на нижний уровень архитектуры, «по пути» могут возникнуть новые буферы: буфер терминала, буфер FastCGI, буфер веб-сервера, буфер операционной системы, буферы стеков TCP/IP" (https://habrahabr.ru/company/mailru/blog/248573/).