Interfața FastCGI este un protocol client-server pentru interacțiunea dintre un server web și o aplicație, o dezvoltare ulterioară a tehnologiei CGI . În comparație cu CGI, este mai productiv și mai sigur.
FastCGI elimină multe dintre limitările programelor CGI . Dezavantajul programelor CGI este că trebuie să fie repornite de serverul web la fiecare solicitare, ceea ce duce la performanțe slabe. FastCGI, în loc să creeze noi procese pentru fiecare cerere nouă, folosește procese care rulează constant pentru a procesa cereri multiple. Acest lucru economisește timp.
În timp ce programele CGI comunică cu serverul prin STDIN și STDOUT ale procesului CGI care rulează, procesele FastCGI folosesc Unix Domain Sockets sau TCP/IP pentru a comunica cu serverul. Acest lucru are următorul avantaj față de programele CGI obișnuite: Programele FastCGI pot fi rulate nu numai pe același server, ci oriunde în rețea. De asemenea, este posibilă procesarea cererilor de către mai multe procese FastCGI care rulează în paralel.
lighttpd include un echilibrator de încărcare FastCGI intern care poate fi utilizat pentru a distribui mai multe servere FastCGI simultan. Spre deosebire de alte soluții, numai procesul FastCGI ar trebui să fie în cluster și nu întregul server web. Acest lucru permite procesului FastCGI să utilizeze mai multe resurse decât, de exemplu, load-balancer + apache + mod_php.
Când comparați php-FastCGI cu apache+mod_php, trebuie să acordați atenție faptului că FastCGI oferă securitate suplimentară, cum ar fi rularea procesului FastCGI sub un alt cont de utilizator decât utilizatorul serverului web și poate fi, de asemenea, într-un chroot 'e , în afară de chroot -ul unui server web.
Când comparăm perl-FastCGI cu apache+mod_perl(1,2), pe lângă cele de mai sus, se observă că utilizarea memoriei partajate între procese, implementată în mod_perl prin startup.pl, necesită un manager de proces FastCGI implementat în Perl . Acest lucru este implementat de modulul FCGI::ProcManager și de suplimentul său FCGI::Spawn.
FastCGI poate fi folosit în orice limbă care acceptă socket-uri. API-uri existente :
Protocoale de interacțiune | |
---|---|
Gateway-uri |