FastCGI
FastCGI est un protocole réseau binaire permettant de connecter un serveur d'applications à un serveur Web . FastCGI est comparable à la Common Gateway Interface (CGI), mais a été développé pour contourner ses problèmes de performances.
Différence avec le CGI
Lorsqu'un site Web basé sur CGI est appelé, le serveur Web démarre un processus du programme CGI et le termine à nouveau à la fin de la demande. Parce que les programmes CGI sont souvent écrits dans un langage de script tel que Perl , cela signifie que l' interpréteur souvent assez complet doit être chargé pour chaque vue de page , ce qui signifie beaucoup de surcharge (le chargement de l'interpréteur prend plus de temps que l'exécution réelle du programme avec de simples programmes CGI) . De plus, chaque demande a besoin de son propre interprète, i. En d'autres termes, s'il y a plusieurs requêtes parallèles, il y a en conséquence plusieurs copies de l'interpréteur dans la mémoire principale du serveur. CGI est devenu très répandu en raison de sa simplicité, de son indépendance par rapport au langage de programmation et de sa prise en charge étendue de pratiquement tous les serveurs Web, mais la surcharge mentionnée ci-dessus entraîne une latence élevée et, avec des serveurs très chargés, une surcharge rapide.
Contrairement à cela, avec FastCGI, le programme à exécuter (y compris l'interpréteur, si nécessaire) n'est chargé qu'une seule fois et est ensuite disponible pour plusieurs demandes - que ce soit à partir du même client ou de différents clients. La communication avec le serveur Web n'a pas lieu via des variables d'environnement et des entrées / sorties standard , mais via des sockets de domaine Unix ou des connexions réseau TCP , c'est-à-dire En d'autres termes, le programme peut même s'exécuter sur un autre ordinateur.
En termes de programmation, la différence avec les programmes CGI peut être déterminée par le fait qu'un programme FastCGI possède une boucle centrale qui accepte les requêtes et peut fonctionner aussi longtemps que le serveur Web:
use FCGI;
$var = 'foo';
while (FCGI::accept () >= 0) {
... http-Request bearbeiten ...
}
Lors de l'exécution de cette boucle, les variables sont conservées dans la mémoire, ce qui d'une part permet des possibilités d'optimisation supplémentaires par rapport aux programmes CGI, et d'autre part nécessite une programmation plus minutieuse afin d'éviter les fuites de mémoire.
Fonctionnalité
La communication avec le serveur Web est orientée paquets et sans connexion . Un paquet de données contient la version du protocole FastCGI, le type de message, un ID de demande et la longueur des données suivantes dans l'en- tête . Le type de message correspond largement aux sources de données connues de CGI. une. transporter les variables d'environnement CGI, le contenu de l'entrée standard (pour POST) ou de la sortie standard (pour la sortie vers le client). Plusieurs clients peuvent être servis en même temps, car ils peuvent être différenciés en fonction de l'ID de la demande; Par conséquent, contrairement à CGI, une seule instance de programme est nécessaire pour servir de nombreux clients.
liens web
- Spécification FastCGI (anglais)