668__________________Часть V. Разработка программ и написание скриптов

Большинство Web-мастеров также знает, что в дополнение к статическим Web-страницам они могут написать программы, запускающиеся на сервере. Эти программы используют интерфейс CGI (Common Gateway Interface — Общий интерфейс шлюза), который позволяет получать информацию от пользователя и обрабатывать ее, что выходит далеко за границы возможностей протокола HTTP. Обычно работа CGI-скрипта завершается возвратом клиенту некоторого HTML-документа, так что пользователь будет видеть новую страницу.

Краткий обзор возможностей HTTP

Большинство HTTP-запросов выполняются для получения от сервера определенного объекта (обычно это HTML-страница). Эти запросы содержат ключевое слово GET. Если сервер сконфигурирован соответствующим образом, то обращение по некоторым URL-адресам может приводить к запуску программы (вместо возврата указанного документа клиенту)и возврата клиенту результатов ее работы. Такие URL-адреса соответствуют CGI-скриптам, использующим метод GET.

Другие CGI-скрипты требуют большего объема входной информации. В качестве примера может служить информация, отсылаемая из заполненной пользователем формы. Такие скрипты используют другой метод, имеющий название POST. Когда сервер получает запрос с использованием метода POST, он запускает CGI-скрипт и затем переадресует поток данных, поступающих от клиента, стандартному каналу ввода (STDIN)CGI-скрипта.

Интерфейс CGI весьма полезен для решения разнообразных задач - многие сайты успешно используют CGI для отправки по электронной почте сообщений автору сайта, содержание которых берется из заполняемых пользователями HTML-форм. Также решаются задачи поиска по информации, заданной пользователем, или даже выполняются запросы к базам данных. Почему же тогда Netscape предлагает альтернативу CGI? На это есть много причин:

+ Каждый раз при активизации CGI-программы, производится ее запуск, затем она выполняется и заканчивает свою работу. Процесс запуска, который во многих операционных системах называетс ветвлением(forking), требует определенных вычислительных затрат. Если скрипт часто используется, то сервер может тратить много времени на его запуск вновь и вновь.

+ Взаимодействие между сервером и CGI-скриптом ограничивается потоком данных, поступающих на стандартный канал ввода (STDIN)CGI-скрипта, а также, возможно, небольшим количеством данных, содержащихся в системных переменных. CGI-скрипт не может обратиться к серверу с произвольным запросом, поэтому сервер должен сам подготовить всю информацию, которую "захочет узнать"какой-либо скрипт, и сохранять ее для каждого скрипта.