Obsah
CGI (Common Gateway Interface)
CGI je rozhraní, které definuje, jak si webový server (např. Apache) vyměňuje data s externím skriptem nebo aplikací. Zatímco běžný požadavek na server vrátí prostý soubor (obrázek nebo text), CGI požadavek spustí program, který data „vyrobí“ za běhu na základě vstupů od uživatele.
Tato technologie umožnila vznik prvních diskusních fór, e-shopů, vyhledávačů a interaktivních formulářů.
Jak CGI funguje (Pracovní postup)
Proces zpracování CGI požadavku probíhá v těchto krocích:
1. **Požadavek:** Uživatel vyplní formulář na webu a odešle ho (metodou GET nebo POST). 2. **Spuštění:** Webový server identifikuje, že jde o CGI požadavek, a spustí příslušný externí program (skript). 3. **Předání dat:** Server předá data z formuláře programu pomocí proměnných prostředí nebo standardního vstupu (stdin). 4. **Zpracování:** Program (napsaný v Perl, C++, Pythonu apod.) provede výpočty nebo se dotáže do [[databaze|databáze]]. 5. **Odpověď:** Program vygeneruje výstup (obvykle HTML kód) a pošle ho zpět serveru. 6. **Ukončení:** Externí program skončí a server pošle výsledek do prohlížeče uživatele.
Programovací jazyky pro CGI
CGI není závislé na konkrétním jazyce. Lze použít jakýkoliv jazyk, který umí číst vstupy a vypisovat textový výstup:
- Perl: Historicky nejoblíbenější jazyk pro CGI skripty díky skvělé práci s textem.
- C / C++: Používalo se tam, kde byl kladen důraz na maximální výkon.
- Python / Ruby: Modernější skriptovací jazyky.
- PHP: Původně vzniklo jako sada CGI skriptů (Personal Home Page).
Výhody a nevýhody
| Vlastnost | Popis |
|---|---|
| Jednoduchost | Velmi snadné na implementaci a pochopení. |
| Nezávislost | Skripty mohou běžet nezávisle na typu webového serveru. |
| Výkon (Mínus) | Pro každý požadavek se musí spustit nový proces v OS, což při vysoké zátěži extrémně zpomaluje server. |
| Bezpečnost (Mínus) | Špatně napsané skripty mohou útočníkovi umožnit spustit libovolné příkazy na serveru. |
Moderní nástupci
Kvůli neefektivitě (spouštění nového procesu pro každý klik) bylo CGI v ostrém provozu nahrazeno pokročilejšími technologiemi:
- FastCGI: Nevypíná skript po každém požadavku, ale drží ho spuštěný v paměti, což dramaticky zvyšuje rychlost.
- Moduly serveru: Např.
mod_phpnebomod_perl, kde je interpret jazyka součástí přímo webového serveru. - Aplikační servery: Moderní frameworky jako Django (Python), Node.js nebo Ruby on Rails, které obsluhují požadavky přímo.
CGI ve filmu (Druhý význam)
Pozor na záměnu: V jiném kontextu zkratka CGI znamená Computer Generated Imagery (počítačem generované obrazy), což jsou vizuální efekty ve filmech a hrách. S protokolem pro webové servery však tento pojem nemá nic společného.
Související pojmy: HTTP, PHP, Databáze, Perl, Server-side scripting, FastCGI, HTML.
