Сервердің айнымалы ортасы.
Айнымалы орта
Сервер CGI-бағдарламаны орындап жатқанда ең алдымен оған айнымалы ортасы түрінде жұмыс істеуі үшін кейбір берілгендерді жібереді. Ресми түрде айнымалылардың он жеті түрі анықталған, бірақ бейресми түрде - HTTP_mechanism деп аталатын төменгі механизм көмегімен одан да көп қолданылады. CGI-бағдарлама бұл айнымалыларға командалық қатардан іске қосылған командалық процессор ортасындағы кез келген айнымалы сияқты қол жеткізе алады. Командалық процессор сценарийсіне, мысалыға, FOO айнымалы ортаны $FOO деп қарастыруға болады; Perl-ге бұл айналдыру $ENV{'FOO'} түрінде көрінеді; С - getenv("FOO"); және т.б. 2-2 кестеде еш болмаса null мағынасымен әрқашан серверден орнатылатын айнымалылар саналған. Сұраныстың тақырыбында клиентпен қайтарылатын берілгендердің бұл айнымалылары HTTP_FOO айнымалы түрінде меншіктеледі, FOO орнына тақырып аты. Мысалыға, көпшілік веб-броузерлер USER_AGENT атымен тақырыпта болжама туралы берілгендерді қосады. Сіздің CGI-бағдарлама бұл берілгендерді HTTP_USER_AGENT айнымалыдан алуы мүмкін.
Серверге хабарлама жіберу.
CGI технология сервер жақтағы технологияға жатады. Бұл дегеніміз, CGI бағдарлама Web серверде іске қосылады және оның локальді операциялық жүйесінде жұмыс істейді.
Клиенттен сұраныс хабарламаны алғанда сервер келесі әрекеттерді орындайды:
Идентификатор бойынша сұралған ресурс бағдарлама болатыны анықталады.
Жасалынатын процестің айнымалы ортасы үшін жадыдан блок ажыратылады. Ажыратылған блокка Web сервердегі процестің айнымалы ортасы көшіріледі.
Web сервер және CGI интерфейсте HTTP протоколы туралы ақпаратпен айнымалы орта құрылады және айнымалы ортаны ажыратылған блокка қосады. 9 кестеде CGI-дің негізгі айнымалы ортасы келтірілген.
Алынған хабарламадан сұралған әдіс REQUEST_METHOD айнымалы ортасына мағына түрінде бірігеді, кейін құрылған айнымалы орта ажыратылған блокка қосылады.
Сұраныстан алынған хабарламаның тақырып бөлігі айнымалы ортаға сәйкес түрленеді және айнымалы ортаның құрылған блогына қосылады.
CGI қосымшадан Web серверге жіберілетін берілгендер форматын HTTP протоколы хабарлама форматымен бірге қосамыз. Бұл берілгендер тақырыпты, бос қатарды және хабарлама денесін ұстауы қажет. Тақырыптар CGI тақырыптары және HTTP тақырыптары болып бөлінеді. CGI –дің 3 тақырыбы бар:
Content-Type – құрамындағы жіберілетін хабарлама денесінің типі. HTTP протоколының мағынасы Content-Type тақырыбына сәйкес келеді.
Location – сұралатын ресурс идентификаторы. HTTP протоколының мағынасы Location тақырыбына сәйкес келеді.
Status – жағдай қатары. Берілген тақырыптың мағынасы жағдайдың үш мағыналық коды және Web сервер пайдаланушы агентіне беруі тиіс түсіндіруші сөйлем болып табылады.
Қалған барлық тақырыптар Web сервермен НТТР тақырыптары болып саналады және пайдаланушы агентіне өзгеріссіз, сонымен бірге хабарлама денесімен беріледі. Берілгендер CGI бағдарламадан Web клиентке тікелей жіберіледі деп санауға болады.
printf() функциясы көмегімен шығарудың стандартты ағынына шығару мүмкін:
#include
int printf(char *format, ...);
При обмене двоичными данными между приложением CGI и сервером Web, например, при отправке графического изображения, сформированного приложением CGI в процессе своей работы, следует учитывать некоторые особенности. Потоки могут находиться в двух режимах: двоичном и текстовом. В двоичном режиме данные передаются в том виде, в котором они представляются при хранении этих данных в памяти.
CGI бағдарлама келесі әрекеттерді орындауы тиіс:
Сұралатын әдісті анықтау үшін REQUEST_METHOD тақырыбының мағынасын оқу.
Егер сұралатын әдіс – GET болса, онда QUERY_STRING айнымалы ортасын оқу және алынған мағынаны форманың кодталған құрамы деп санау. Кодтау тәсілін application/x-www-url-encoded тең деп санау.
Егер сұралатын әдіс – POST, онда CONTENT_LENGTH айнымалы ортадан сұраныс хабарламасының денесінің ұзындығын оқу. Енгізудің стандартты ағынынан сұраныс хабарламасының денесін оқу және форманың кодталған құрамы деп санау. Кодтау тәсілін CONTENT_TYPE айнымалы ортасынан оқу.
Кодтау тәсіліне тәуелді форманың кодталған құрамын тарату.
CGI бағдарламада қажетті айнымалы ортаны оқу.
Әрекет бағдарламада барлық қажеттілерді орындау және бағдарлама жұмысы нәтижесімен құжатты қалыптастыру.
Шығару стандартты ағынына барлық қажетті CGI және HTTP тақырыптарын және бос қатарды жіберу.
Қалыптасқан құжатты шығарудың стандартты ағынына жіберу.
Достарыңызбен бөлісу: |