Pereiti prie turinio

Common Gateway Interface

Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Versija spausdinimui nebėra palaikoma ir gali turėti atkūrimo klaidų. Prašome atnaujinti savo interneto naršyklės žymes ir naudoti numatytąją interneto naršyklės spausdinimo funkciją.
   Šiam straipsniui ar jo daliai trūksta išnašų į patikimus šaltinius.
Jūs galite padėti Vikipedijai pridėdami tinkamas išnašas su šaltiniais.

CGI (Common Gateway Interface) – protokolas, apibrėžiantis, kaip turi bendrauti WWW serveris ir jo vykdomos programos, skirtos iš naršyklės gautai informacijai apdoroti ir/arba dinaminiams puslapiams generuoti.

CGI buvo sugalvotas 1993 ir realizuotas viename iš pirmųjų WWW serverių – NCSA HTTPd. Iš naršyklės gauta informacija į apdorojimo programą perduodama panaudojant aplinkos kintamuosius (išskyrus HTTP POST metodu pateikiamus duomenis į standartinę įvestį). Kiekvienai užklausai apdoroti kuriamas naujas procesas.

CGI patogus tuo, kad:

  • konkrečios taikymo logikos nereikia tiesiogiai integruoti į WWW serveryje esančios svetainės išeities kodą – dėl kiekvieno pakeitimo nereikia perkompiliuoti ir perkrauti viso WWW serverio;
  • taikymo programos gali būti parašytos bet kokia kalba, įskaitant skriptų rašymo kalbas; būtent skriptų kalbomis (perl, php, sh) buvo sukurta daugelis CGI programų;
  • dauguma WWW serverių palaiko šį protokolą, todėl CGI programas galima naudoti su skirtingais WWW serveriais;
  • taikymo programos gali būti vykdomos kitomis teisėmis nei pats WWW serveris, taip pagerinant visos sistemos saugumą.

CGI trūkumai:

  • sparta – kadangi kiekviena užklausa apdorojama atskiro proceso, serverio resursai yra išnaudojami nepakankamai.

Spartos problema sprendžiama dviem būdais:

  • integruojant skriptų kalbų interpretatorius į WWW serverius (mod php, mod perl);
  • taikymo programą paleidžiant kaip paslaugą, o užklausų duomenis ir sugeneruotus tinklalapius perduodant tarp WWW serverio ir CGI programos socket'u (FastCGI).


   Šiame straipsnyje naudojami diskutuotini terminai.
Daugiau apie kompiuterinius terminus skaitykite žodynėlyje.