Az oldal letöltésének és megjelenítésének folyamata a következő:
A HTTP kérés és HTTP válasz egyszerű szövegfájl. A formátuma a TCP/IP-ben szokásos:
A CGI és általánosabban a Web programozás ott jön be a képbe, amikor az URL által meghatározott oldal nincs statikusan a szerveren, hanem valahogy elő kell állítani a szerveren lévő információkból. A sima HTML oldalak és képek lekérését úgy is lehet tekinteni, mint a nulla operátort, amikor a Web szerver nem csinál semmit, csak leküldi a kliensnek a Web oldalt. Amikor azonban az információ nem ilyen módon áll rendelkezésre, vagy ha a kérés feldolgozása során a szerveren tárolt információk megváltoznak, akkor már Web szerver programozásról van szó.
Ilyenkor a szerver nem csak beolvas egy fájlt valamelyik diszkjéről, hanem elindít
valamilyen programot, és ennek a programnak az eredménye adja a szerver válaszát. Egy
nagyon egyszerű példaprogram kiírhatja az 1970. január 1. nulla óra nulla perc,
nulla másodperc időpont óta eltelt időt másodpercekben:
#!/usr/bin/perl
require 'state.pl';
print_http_state('200 OK');
$time = time();
print <<END;
Content-type: text/html
<HTML>
<BODY>
$time
</BODY>
</HTML>
END
Ezzel a legelső cgi programot meg is írtuk. Persze nem csak cgi felület létezik. Nagyon sok lehetőség van arra,hogy a Webszerver program miként indítsa el az alkalmazást, annak hogyan adja át a paramétereket, és hogyan kapja meg az eredményt.
A cgi programozásnál a Webszerver egy külön processzt indít el, és ennek a processznek a parancsorában, a szabványos bemenetében és a környezeti változókban adja át a http kérés paramétereit, a program által megjelenítendő HTML oldalt pedig a processz szabványos kimenetéről veszi.
Egy másik lehetőség az isapi felület, amelyik nem indít el egy külön processzt, hanem az alkalmazásokat, mint dinamikusan szerkeszthető könyvtárakat kell a Webszerverhez illeszteni. Ez sokkal gyorsabb lehet, mint a cgi, mert nem indít új processzt, viszont egy végtelen ciklus, vagy bármely más programhiba az egész webszerver processzt veszélyezteti. És nem minden webszerver tudja, csak a Microsoft IIS, és az Apache. (Azóta, hogy ezt írtam lehet, hogy mások is tudják.)
Egy hoszabb cikk az architektúráról, amely az Új Alaplapban jelent meg.
Ezután a bevezető után tehát nézzük meg, hogy mi is a cgi, precízen, hogyan működik.