Фреймы не заменяются новой «технологией». Современное состояние заключается в том, чтобы поместить весь контент в один и тот же документ и создать его с помощью CSS. Конечно, серверная часть может помочь вам в этом.
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 & amp; 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 & amp; MySQL) с помощью программирования сокетов? / g16]
Вы компилируете исполняемый файл один раз, веб-сервер выполняет программу и передает данные в запросе программе и выводит полученный ответ. CGI указывает, что один экземпляр программы будет запущен для каждого запроса.
Говорят, что CGI устарел, но его больше не используется. Это его последнее обновление?
CGI по-прежнему используется, когда производительность не является первостепенной, и требуется простое средство для выполнения кода. неэффективен по ранее указанным причинам, и есть более современные средства для выполнения любой программы в веб-среде. В настоящее время самым известным является FastCGI .
Возможно, вам захочется узнать, что не является CGI, и ответ - это МОДУЛЬ для вашего веб-сервера (если я предполагаю, что вы запущен Apache). И это БОЛЬШОЕ РАЗМЕЩЕНИЕ, потому что CGI нуждается и внешняя программа, нить, что бы создать экземпляр сервера приложений PERL, PHP, C, где, когда вы запускаете в качестве МОДУЛЯ эту программу, является веб-сервером (apache) per se.
Из-за всего этого в игре много проблем с производительностью, безопасностью и переносимостью. Но хорошо знать, что не является CGI первым, чтобы понять, что это такое.
CGI - это механизм, посредством которого веб-сервер вызывает внешнюю программу для обработки запроса, причем переменные среды и стандартный ввод используются для подачи данных запроса в программу. Точный язык, на котором написана внешняя программа, не имеет значения, хотя проще писать программы CGI на некоторых языках по сравнению с другими.
Поскольку CGI-скрипты требуют прав на выполнение, httpd по умолчанию разрешает только CGI-программы в cgi-bin
для запуска (возможно, в настоящее время ошибочных) целей безопасности.
Большинство скриптов PHP выполняются в процессе веб-сервера через mod_php
. Это не CGI.
CGI медленный, так как программа (и связанный интерпретатор) должна быть запущена за запрос. Современные альтернативы - это встроенное исполнение, используемое mod_php и длительные процессы, используемые FastCGI. У данного языка может быть свой собственный способ реализации этих механизмов, поэтому обязательно обращайтесь к CGI.
Посмотрите на CGI в Википедии. CGI является протоколом между веб-сервером и внешней программой или скриптом, который обрабатывает ввод и генерирует вывод, который отправляется в браузер.
CGI - это просто способ веб-сервер и программа для общения, не более того, не меньше. Здесь сервер управляет сетевым соединением и протоколом HTTP, и программа обрабатывает ввод и генерирует вывод, который отправляется в браузер. CGI-скрипт может быть в основном любой программой, которая может быть выполнена веб-сервером и следует протоколу CGI. Таким образом, программа CGI может быть реализована, например, на C. Однако это очень редко, так как C не очень хорошо подходит для задачи.
/cgi-bin/*.cgi
- это просто путь, их сценарий CGI. Веб-сервер обычно настроен по умолчанию для получения CGI-скриптов с этого пути.
скрипт CGI может быть реализован также в PHP, но все PHP-программы не являются скриптами CGI. Если веб-сервер имеет встроенный PHP-интерпретатор (например, mod_php в Apache), тогда фаза CGI пропускается более эффективным прямым протоколом между веб-сервером и интерпретатором.
Независимо от того, был ли вы реализован сценарий CGI или нет, это зависит от как ваш скрипт выполняется веб-сервером.
CGI - это программа (или веб-API), которую вы пишете, и сохраняете ее на веб-сервере. CGI - это файл.
Этот файл сидит и ждет на веб-сервере. Когда клиентский браузер отправляет запрос на веб-сервер для выполнения вашего файла CGI, веб-сервер запускает ваш файл CGI на сайте сервера. Входы для этой программы CGI, если таковые имеются, находятся в клиентском браузере. Выходы этой программы CGI отправляются в браузер.
Какой язык вы используете для написания программы CGI? Другие сообщения уже упоминают c, java, php, perl и т. Д.
CGI указан в RFC 3875 , хотя это более поздняя «официальная» кодификация исходного документа NCSA . В принципе, CGI определяет протокол для передачи данных о HTTP-запросе с веб-сервера в программу для обработки - любую программу на любом языке. В то время, когда спецификация была написана (1993), большинство веб-серверов содержали только статические страницы, «веб-приложения» были редкой и новой вещью, поэтому казалось естественным отделить их от «нормального» статического контента, например, в cgi-bin
, кроме статического содержимого, и заканчивая их .cgi
.
В это время здесь также не было выделенных «языков веб-программирования», таких как PHP, а C было доминирующим переносным программированием язык - так много людей написали свои сценарии CGI в C. Но Perl быстро оказался более подходящим для такого рода вещей, и CGI стал почти синонимом Perl на некоторое время. Затем появились Java Servlets, PHP и множество других и заняли большую часть доли рынка Perl.
Пример в реальной жизни: сложная база данных, которая должна отображаться на веб-сайте. Поскольку база данных была спроектирована где-то около 1986 года (!), Многие данные были упакованы по-разному, чтобы сэкономить место на диске.
По мере развития разработчики больше не могли решать сложные запросы данных только в SQL, например, потому что алгоритмы сортировки были необычными.
Существует три разумных решения:
CGI запускает ваш скрипт в решении №3 и выводит эффект в браузер. У вас есть скорость скомпилированной программы, гибкость языка лучше, чем SQL, и нет необходимости писать плагины на SQL-сервер. (Опять же, это пример, специфичный для SQL и C)
Идея CGI заключается в том, что программа / сценарий (независимо от того, Perl или даже C) получает вход через STDIN (данные запроса) и выводит данные через STDOUT (echo, printf statements). Причина, по которой большинство скриптов php не квалифицируется, заключается в том, что они выполняются в модуле PHP Apache.
CGI - это спецификация интерфейса между веб-сервером (HTTP-сервером) и исполняемой программой определенного типа, которая предназначена для обработки конкретного запроса.
В нем описывается, как определенные свойства этого запроса должны быть переданы среда этой программы и то, как программа должна сообщать ответ на сервер и как сервер должен «заполнить» ответ, чтобы сформировать правильный ответ на исходный HTTP-запрос.
Некоторое время CGI был проект IETF в Интернете и, как таковой, имел срок действия. Он истек без обновления, поэтому не было стандарта CGI. Теперь это информационный RFC, но, как таковой, общепринятая практика и сама по себе не является стандартом. rfc3875.txt , rfc3875.html
Программы, реализующие интерфейс CGI, могут быть записаны на любом языке, который запускается на целевой машине. Они должны иметь доступ к переменным среды и обычно стандартный вход , и они генерируют свой вывод на стандартном выходе .
Скомпилированный языки, такие как C, обычно использовались, как и языки сценариев, такие как perl, часто использующие библиотеки, чтобы облегчить доступ к среде CGI.
Одним из больших недостатков CGI является то, что для каждого запроса создается новая программа поэтому сохранение состояния между запросами может быть серьезной проблемой производительности. Состояние может быть обработано в файлах cookie или закодировано в URL-адресе, но если оно становится большим, оно должно храниться в другом месте и вводиться в ключ из кодированной информации URL-адреса или файла cookie. Каждый вызов CGI затем должен будет перезагрузить сохраненное состояние из хранилища где-нибудь.
По этой причине и для очень простого интерфейса к запросам и сеансам гораздо более популярны лучшие интегрированные среды между веб-серверами и приложениями , Среды, такие как современная реализация php с apache, намного лучше интегрируют целевой язык с веб-сервером и обеспечивают доступ к объектам запросов и сеансов, которые необходимы для эффективного обслуживания HTTP-запросов. Они предлагают гораздо более простой и богатый способ писать «программы» для обработки HTTP-запросов.
Будете ли вы писать сценарий CGI, скорее, зависит от интерпретации. Это, безусловно, сделало одно, но гораздо более обычным является запуск php в качестве модуля, где интерфейс между скриптом и сервером не является строго интерфейсом CGI.
Что такое CGI?
blockquote>Средство для веб-сервера для получения своих данных из программы (вместо, например, файла).
В чем дело с /cgi-bin/*.cgi?
blockquote>Нет большой сделки. Это просто соглашение.
Я не знаю, для чего этот каталог cgi-bin на сервере. Я не знаю, почему у них есть расширения * .cgi.
blockquote>Сервер должен знать, что делать с файлом (например, рассматривать его как программу для выполнения вместо того, чтобы просто служить вверх). Наличие расширения .html говорит ему использовать тип содержимого text / html. Имея расширение .cgi, он запускает его как программу.
Сохранение исполняемых файлов в отдельном каталоге дает некоторую дополнительную защиту от выполнения неправильных файлов и / или обслуживания CGI-программ в качестве исходных данных в случае, если сервер получает misconfigured.
Почему Perl всегда мешает.
blockquote>Это не так. Perl был просто большим и популярным одновременно с CGI.
Я не использовал Perl CGI в течение многих лет. Я использовал mod_perl в течение долгого времени и склоняюсь к PSGI / Plack с FastCGI в эти дни.
Эта книга - еще один отличный пример программирования CGI с Perl. Почему бы не «Программирование CGI с помощью PHP / JSP / ASP».
blockquote>CGI не очень эффективен. Лучшие методы для общения с программами из веб-серверов приходили примерно одновременно с PHP. JSP и ASP - это разные методы для общения с программами.
Программирование CGI в C меня очень смущает. в C ?? Серьезно ??
blockquote>Это язык программирования, почему бы и нет?
Когда я компилирую?
blockquote>
- Запись кода
- Скомпилировать
- URL-адрес доступа
- Веб-сервер запускает программу
Как программа получает
blockquote>Он не должен выполняться как независимый процесс (вы можете писать модули Apache в C (это значит, что это будет машинный код, поэтому он должен выполняться как независимый процесс). ), но вся концепция CGI заключается в том, что он запускает внешний процесс.
Как он взаимодействует с веб-сервером? IPC?
blockquote>STDIN / STDOUT и переменные среды - как определено в спецификации CGI.
и сопряжение со всеми серверами (в моем примере MATLAB & amp; MySQL) с помощью программирования сокетов?
blockquote>Использование любых методов, которые вам нравятся и которые поддерживаются.
Говорят, что CGI обесценивается. Его больше не используют. Это так?
blockquote>CGI неэффективен, медленен и прост. Он редко используется, когда он используется, потому что он прост.
Какое значение имеет последнее обновление?
blockquote>1.1
CGI-скрипт - это консольная / оболочечная программа. В Windows, когда вы используете окно «Командная строка», вы запускаете консольные программы. Когда веб-сервер выполняет скрипт CGI, он предоставляет вход в программу console / shell с использованием переменных среды или «стандартного ввода». Стандартный ввод похож на ввод данных в программу console / shell; в случае скрипта CGI веб-сервер выполняет типизацию. Сценарий CGI записывает данные на «стандартный вывод», и этот вывод отправляется клиенту (веб-браузеру) в виде HTML-страницы. Стандартный вывод похож на вывод, который вы видите в программе console / shell, за исключением того, что веб-сервер читает его и отправляет.
CGI-скрипт может быть выполнен из браузера. URI обычно включает строку запроса, которая предоставляется сценарию CGI. Если метод «get», строка запроса предоставляется в CGI Script в переменной среды QUERY_STRING. Если метод «post», то строка запроса предоставляется в CGI Script с использованием стандартного ввода (CGI Script читает строку запроса из стандартного ввода).
Раннее использование скриптов CGI состояло в обработке форм , В начале HTML формы HTML обычно имели атрибут «действие» и кнопку, обозначенную как кнопка «отправить». Когда кнопка отправки нажата, URI, указанный в атрибуте «действие», будет отправлен на сервер с данными из формы, отправленной в виде строки запроса. Если «действие» указывает скрипт CGI, тогда будет выполнен сценарий CGI, а затем будет выведен HTML-страница.
RFC 3875 «Интерфейс общего шлюза (CGI)» частично определяет CGI с использованием C, как в говоря, что переменные среды "получают доступ к библиотечной подпрограмме C getenv () или переменной environ".
Если вы разрабатываете скрипт CGI с использованием C / C ++ и используете Microsoft Visual Studio для этого, тогда вы будете разрабатывать консольная программа.
CGI по существу передает запрос на любой интерпретатор , настроенный с помощью веб-сервера. Это может быть Perl, Python, PHP, Ruby, C почти что угодно. Perl был наиболее распространенным в тот день, поэтому вы часто видите его в отношении CGI.
CGI не мертв. На самом деле большинство крупных хостинговых компаний используют PHP как CGI, а не mod_php, потому что он предлагает конфигурацию пользовательского уровня и некоторые другие вещи, в то время как он медленнее, чем mod_php. Ruby и Python также обычно запускаются как CGI. они имеют ключевое различие в том, что серверный модуль работает как часть реального серверного программного обеспечения - где, как и CGI, полностью за пределами сервера. Сервер просто использует модуль CGI для определения того, как передавать и получать данные внешнему интерпретатору.
Server side Program
в вашей фигуре - мой PHP-скрипт. Итак, я никогда не программировал CGI? Потому что я никогда не писал ничего, что попадало между webserver & amp; мой PHP-скрипт. Черт!! это убивает меня. – claws 18 January 2010 в 22:24