Egy egyszerű fastcgi-szerver és fastcgi-klientaperl, assembler, C - programozó blogja, perl,

FastCGI-szerver alapú POE :: Component :: FastCGI és FastCGI-alapú kliens FCGI :: Client

Mi CGI

CGI - olyan szabvány, amely leírja, hogy a szerver fut a CGI-szkript, hogyan kell átadni a HTTP-kérés paraméterei, mint a CGI-script kell továbbítani, hogy az eredményeket a szerver.

Amikor dolgozik CGI, web-szerver kezelni minden kérésre létrehoz egy új folyamatot.

Hogy nyújtson be egy CGI-szkript információk az ilyen kérelmet, web-szerver futtatása előtt a szkript létrehoz egy speciális környezeti változók, és írják fel az összes információt az aktuális kérés.

CGI-szkript hozzáférést kap az értékeket minden változó tekintetében operációs rendszer funkcióit, ezáltal CGI-szkript kap teljes körű tájékoztatást a kérés. A kérés test (ha van ilyen) szállított STDIN (stdin) forgatókönyvet, és a mérete - CONTENT_LENGTH bájt.

Ha a CGI-szkript akar küldeni valamit vissza, akkor elküldi az összes szabvány kimenetre script. Meg kell határozni, a CGI-header (mezők Content-Type. Location. Status), egy üres sor, amely elválasztja a fejlécet a test válasz válasz test maga, amelynek típusa nem lett megadva a Content-Type.

Web-szerver megkapja a STDOUT választ a CGI-szkript, generál HTTP-válasz, és elküldi az ügyfélnek.

Mi FastCGI

Ellentétben a CGI FastCGI használ állandóan futó folyamatok feldolgozására több megkeresés.

CGI-program együttműködik a szerverre STDIN és STDOUT futó folyamatokat.

FastCGI-eljárásokat alkalmazunk, hogy kommunikáljon a Unix Domain Sockets vagy TCP / IP szerver. Ez a következő előnyökkel rendelkezik a hagyományos CGI-programok: FastCGI-program futtatható nemcsak ugyanazon a szerveren, hanem bárhol a hálózatban. Lekérdezés feldolgozása is kapható több FastCGI-folyamatok párhuzamosan futó. Lehetőség van egyidejűleg több FastCGI szerver, eloszlatva a terhelést Ezek között az nginx vagy lighttpd.

Miután a kapcsolat FastCGI folyamat webszerver kezdődik az adatcserét közöttük, egy egyszerű protokoll, amely megoldja a két problémát: a szervezet a kétirányú kommunikációt egyetlen vegyület (emulációs stdin, stdout, STDERR) és szervezése több független FastCGI-ülés egyetlen kapcsolat.

Minden adat csomagolva egy FastCGI-rekord - egy protokoll adat. FastCGI-bejegyzés szolgál szervezni kétirányú kommunikációt és multiplexelés több munkamenet belül ugyanaz a vegyület.

FastCGI-tétel egy fix hosszúságú fejlécet, majd egy szintező tartalom és változó hosszúságú adat. Mindegyik bejegyzés tartalmaz 7 elemet.

Egy példa egy egyszerű FastCGI-szerver alapú POE-alkatrészek - POE :: Component :: FastCGI

Mit FastCGI szerver? Folyamatosan figyeli a megadott portot kapott új kéréseket a web-szerver, kibont a felvételt, és kezeli a kérést. Majd választ küld vissza. Web-szerver kell hozzá a http-fejlécek és elküldi a választ az ügyfél.