Этапы работы сценария.

Location: http://host/file.txt

Content-type: text/html

Server: NCSA/1.0a6

НТТР/1.0 200 ОК

Status: 404 Not found

На базе этой информации сервер и формирует окончательный заголо­вок, который и передается клиенту. Например, набор директив:

сообщает об успешном выполнении запроса.

Здесь: 200 - код означающий успешную обработку запроса, что и пояс­няет "Ok".

Следующая директива: Content-type: text/html

обязательно присутствует, если есть тело ответа, и сообщает серверу, что далее последует HTML-документ.

А директива:

приведет к тому, что Web-сервер выдаст file.txt, как если бы он был затребо­ван клиентом.

Как видно из вышеизложенного, работа сценария в общем случае со­стоит из трех частей:

1. Инициализация и обработка входных данных.

2. Основная часть работы и вывод пользователю.

3. Завершение своей работы.

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

После инициализации работы, чтения входящих данных и их разделе­ния на отдельные переменные, сценарий будет готов к выполнению основной части работы. В этой части работы сценарий готовит данные для вывода и шаги регламентируются не столь жестко, как на этапе инициализации. Все выполняемые действия определяются поставленными целями. Поскольку обработка данных в CGI довольно проста, а целью создания сценария почти всегда является подготовка некоторой исходящей информации, формализо­ванные шаги обработки входящих и подготовки исходящих данных объеди­няются в одну фазу программы.

Вывод результатов. В простом CGI-сценарии исходящая информация представляет собой только заголовок и HTML-текст. Более сложные сцена­рии могут выводить только графику, графику с текстом или же вообще всю информацию, необходимую для повторного вызова сценария с некоторыми дополнительно введенными данными.

Завершение подразумевает всего лишь очистку и освобождение всех использованных ресурсов с последующим выходом из программы. Если вы­полнялось распределение свободной памяти или других объек­тов, то они должны быть освобождены. Если этого не сделать может возник­нуть утечка или блокировка ресурсов всей системы и остановка работы лю­бых других сценариев или вообще всего сервера. На большинстве платформ файлы и созданные в памяти объекты автоматически закрываются и освобо­ждаются операционной системой после завершения использовавшего их про­цесса. Но и в данном случае неразумно при освобождении ресурсов целиком полагаться на операционную систему.

Контрольные вопросы

1. Какую информацию содержат переменные среды в интерфейсе CGI?

2. Как производится обработка входных данных для метода get в интерфейсе взаимодействия сервера и внешней программы?

3. Как производится обработка входных данных для метода post в интерфейсе взаимодействия сервера и внешней программы?

4. Каковы этапы работы по обработке входных данных внешней программой?

5. Какую информацию несет заголовок вывода сценария post в интерфейсе взаимодействия сервера и внешней программы?