От клиентского браузера до веб-сервера Apache httpd существует четко определенный протокол HTTP через TCP / IP (сокеты).Мне трудно понять, какой канал / протокол используется от веб-сервера Apache httpd до Perl, PHP или CGI?Это межпроцессное взаимодействие через сокеты, трубку, очередь сообщений или сигналы?Может ли кто-то пролить свет на то, что действительно происходит за кулисами?Это похоже на то, как если бы веб-сервер Apache httpd выполнял другую программу (Perl или PHP), записывал выходные данные и затем отправлял их в браузер клиента?
Из Linux Server Security :
Протокол CGI не определяет, как веб-сервер должен взаимодействовать с программой CGI.Было два основных решения:
Автономные программы CGI
Apache получает запрос CGI, открывает двусторонний канал к внешней программе, отправляет ему вход CGIданные и возвращает вывод программы клиенту.Как отдельный процесс, программа может аварийно завершить работу, не отключая веб-сервер.Недостатком является то, что запуск нового процесса относительно медленен.
Встроенные CGI-программы
Программа переписана в виде модуля Apache и требует затрат при запускетолько когда начинается процесс Apache.Это намного быстрее, чем внешняя программа, и имеет доступ к внутренним компонентам Apache и другим модулям.Самыми популярными модулями для CGI в Apache являются механизмы интерпретатора для Perl (mod_perl) и PHP (mod_php).