CGI - это интерфейс, который сообщает веб-серверу, как передавать данные в приложение и из приложения. Более конкретно, он описывает, как информация запроса передается в переменных среды (таких как тип запроса, удаленный IP-адрес), как тело запроса передается через стандартный ввод, и как ответ передается через стандартный вывод. Подробнее см. В спецификации CGI .
Чтобы использовать ваше изображение:
user (client) request for page ---> webserver ---[CGI]----> Server side Program ---> MySQL Server.
Большинство, если не все, веб-серверы могут быть сконфигурированы для выполнения программы как «CGI». Это означает, что веб-сервер после получения запроса перенаправит данные в конкретную программу, установив некоторые переменные среды и упорядочив параметры через стандартный ввод и стандартный вывод, чтобы программа могла знать, где и что искать.
Основным преимуществом является то, что вы можете запускать ЛЮБОЙ исполняемый код из Интернета, учитывая, что и веб-сервер, и программа знают, как работает CGI. Вот почему вы можете писать веб-программы на C или Bash с помощью обычного веб-сервера с поддержкой CGI. Это и то, что большинство сред программирования могут легко использовать стандартный ввод, стандартный вывод и переменные среды.
В вашем случае вы, скорее всего, использовали другое, специфичное для PHP, средство связи между вашими скриптами и веб-сервером, это, как вы хорошо упомянули в своем вопросе, встроенный интерпретатор с именем mod_php.
Итак, отвечая на ваши вопросы:
Что такое CGI?
См. Выше.
В чем дело с /cgi-bin/*.cgi? Что с этим? Я не знаю, для чего этот каталог cgi-bin на сервере. Я не знаю, почему у них есть расширения * .cgi.
Это традиционное место для программ cgi, многие веб-серверы поставляются с этим каталогом, предварительно настроенным для выполнения всех двоичных файлов в качестве программ CGI. Расширение .cgi обозначает исполняемый файл, который должен работать через CGI.
Почему Perl всегда мешает. CGI & Perl (язык). Я также не знаю, что случилось с этими двумя. Почти все время я продолжаю слышать эти два в сочетании "CGI & Perl". Эта книга является еще одним отличным примером программирования CGI с использованием Perl. Почему бы не "Программирование CGI с помощью PHP / JSP / ASP" Я никогда не видел таких вещей.
Поскольку Perl является древним (старше, чем PHP, JSP и ASP, которые возникли, когда CGI был уже старым, Perl существовал, когда CGI был новым), и стал довольно известным как очень хороший язык для обслуживания динамических веб-страниц через CGI. , В настоящее время существуют другие альтернативы для запуска Perl в веб-сервере, в основном mod_perl .
CGI Программирование на C это меня сильно смущает. в C ?? Шутки в сторону?? Я не знаю, что сказать. Я просто в замешательстве. "В C" ?? Это меняет все. Программа должна быть скомпилирована и выполнена. Это полностью меняет мой взгляд на веб-программирование. Когда я компилирую? Как программа выполняется (потому что это будет машинный код, поэтому он должен выполняться как независимый процесс.) Как он взаимодействует с веб-сервером? IPC? и взаимодействует со всеми серверами (в моем примере MATLAB & MySQL) с помощью программирования сокетов? Я заблудился !!
Вы компилируете исполняемый файл один раз, веб-сервер выполняет программу и передает данные в запросе программе и выводит полученный ответ. CGI указывает, что для каждого запроса будет запускаться один экземпляр программы. Вот почему CGI сегодня неэффективен и устарел.
Они говорят, что CGI устарела. Его больше нет в использовании. Это так? Какое его последнее обновление?
CGI по-прежнему используется, когда производительность не имеет первостепенного значения и требуются простые средства выполнения кода. Это неэффективно по ранее изложенным причинам, и существуют более современные средства для выполнения любой программы в веб-среде. В настоящее время самым известным является FastCGI .