Что такое Common Gateway Interface (CGI)? - PullRequest
719 голосов
/ 19 января 2010

CGI - это интерфейс общего шлюза. Как следует из названия, это «общий» интерфейс шлюза для всего. Это так тривиально и наивно от названия. Я чувствую, что понял это, и чувствовал это каждый раз, когда сталкивался с этим словом. Но, честно говоря, я этого не сделал. Я все еще в замешательстве.

Я программист PHP с опытом веб-разработки.

запрос пользователя (клиента) на страницу ---> веб-сервер (-> встроенный PHP интерпретатор) ----> Серверная часть (PHP) Script ---> MySQL Server.

Теперь, скажем, мой PHP Script может извлекать результаты с сервера MySQL, сервера MATLAB и другого сервера.

Итак, теперь PHP Script является CGI? Потому что его интерфейс для веб-сервера и всех других серверов? Я не знаю. Иногда они называют CGI, технологию, а иногда называют CGI программой или каким-то другим сервером.

  • Что такое CGI?

  • Что за дела с /cgi-bin/*.cgi? Что с этим? Я не знаю, для чего этот каталог cgi-bin на сервере. Я не знаю, почему у них есть расширения * .cgi.

  • Почему Perl всегда мешает. CGI & Perl (язык). Я также не знаю, что случилось с этими двумя. Почти все время я продолжаю слышать эти два в сочетании "CGI & Perl". Эта книга - еще один замечательный пример CGI Программирование на Perl . Почему бы не "CGI Программирование с PHP / JSP / ASP"? Я никогда не видел таких вещей.

  • CGI Программирование на C , меня очень смущает. " в C " ?? Шутки в сторону?? Я не знаю, что сказать. Я просто запутался. " в C " ?? Это меняет все. Программа должна быть скомпилирована и выполнена. Это полностью меняет мой взгляд на веб-программирование. Когда я собираю? Как выполняется программа (потому что это будет машинный код, поэтому он должен выполняться как самостоятельный процесс). Как это общается с веб-сервером? IPC? и взаимодействие со всеми серверами (в моем примере MATLAB & MySQL) с помощью программирования сокетов? Я потерялся !!

  • Люди говорят, что CGI устарела и больше не используется. Это так? Какое последнее обновление?

Однажды я столкнулся с ситуацией, когда я должен был дать доступ HTTP PUT запрос к веб-сервер (Apache HTTPD). Это долго назад. Итак, насколько я помню, это что я сделал:

  1. Отредактировал файл конфигурации Apache HTTPD, чтобы указать веб-серверу пройти все запросы HTTP PUT для некоторых put.php (мне пришлось написать этот PHP скрипт)

  2. Реализовать put.php для обработки запроса (сохранить файл в папке упоминается)

Люди говорили, что я написал CGI Script. Серьезно, я понятия не имел, что они говорили о.

  • Я действительно написал CGI Script?

Надеюсь, вы поняли, в чем заключается мое замешательство. (Потому что я сам не знаю, где я запутался). Я прошу вас, ребята, сделать ваш ответ максимально простым. Я действительно не могу понять любую причудливую техническую терминологию. По крайней мере, в этом случае.

EDIT:

Я нашел этот удивительный урок "CGI Programming Simple!" - CGI Tutorial , который объясняет понятия самым простым возможным способом. После прочтения этой статьи вы можете прочитать Начало работы с CGI-программированием на C , чтобы дополнить свое понимание реальными примерами кода. Я также добавил эти ссылки к этому руководству в статью Википедии: http://en.wikipedia.org/wiki/Common_Gateway_Interface

Ответы [ 12 ]

6 голосов
/ 23 сентября 2014

CGI - это программа (или веб-API), которую вы пишете и сохраняете на сайте веб-сервера.CGI - это файл.

Этот файл находится и ожидает на веб-сервере.Когда клиентский браузер отправляет запрос на веб-сервер для выполнения вашего файла CGI, веб-сервер запускает ваш файл CGI на сайте сервера.Входные данные для этой программы CGI, если таковые имеются, взяты из клиентского браузера.Результаты этой CGI-программы отправляются в браузер.

На каком языке вы пишете CGI-программу?Другие посты уже упоминали c, java, php, perl и т. Д.

4 голосов
/ 19 января 2010

Идея, лежащая в основе CGI, заключается в том, что программа / скрипт (будь то Perl или даже C) получает ввод через STDIN (данные запроса) и выводит данные через STDOUT (операторы echo, printf). Причина, по которой большинство php-скриптов не соответствуют требованиям, заключается в том, что они запускаются под модулем PHP Apache.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...