fastcgi - que - php fcgi
¿Por qué implementar una aplicación web como FastCGI en lugar de un nuevo servidor web? (1)
Tenía un programa de servidor web que reemplacé con un programa FCGI. Parte de la razón por la que lo hice fue por los requisitos del programa. Necesitaba ejecutarse bajo el servidor web existente, ya que hacerlo no requeriría una configuración adicional.
Otro requisito era que sería capaz de rastrear algunos valores de estado que pueden cambiar con frecuencia. El programa existente no era muy eficiente, rastreaba estos valores de estado externamente y realizaba una carga nueva de ellos para cada solicitud. Una de las ventajas de un programa FCGI es que es persistente, por lo que podría sondear esos valores estatales y estarían disponibles y listos para cada solicitud.
No tuve que implementar ninguna de las especificaciones de FCGI, solo utilicé una biblioteca FCGI existente y me encargué de todas las comunicaciones con el servidor web. En comparación con otras aplicaciones que he escrito que tienen un servidor web incorporado, implementar una con la biblioteca FCGI fue relativamente simple.
Otra ventaja de FCGI es que una aplicación FCGI no necesita residir en un disco accesible para el servidor web. Puede configurar el servidor para establecer una conexión TCP con una instancia de su aplicación FCGI en otro servidor. Si se encuentra en una situación en la que no puede acceder directamente al servidor web, esto puede ser muy útil. Lograr lo mismo con otros métodos puede ser engorroso, pero una aplicación FCGI ni siquiera necesita ser modificada. Simplemente configure el servidor, inicie su aplicación en el host FCGI y estará listo.
Otra ventaja más de FCGI es que puede configurar el servidor web para distribuir solicitudes entre un número predeterminado de instancias de su aplicación. Si su aplicación web funciona mejor manejando cada solicitud de manera síncrona, FCGI es ideal porque puede canalizar cada solicitud en una sola instancia, y esa instancia puede manejar cada solicitud en un solo bucle. Si desea, como máximo, 2, 3 o n instancias, todo lo que debe hacer es cambiar el valor en el servidor y puede lograrlo.
Entonces, FCGI no es lo mejor para cada situación. Es en los momentos en que se enfrenta a requisitos inusuales que FCGI es más atractivo.
Entiendo el propósito de FastCGI en términos de rendimiento sobre otras interfaces de puerta de enlace. Pero si las bibliotecas que implementan FastCGI ya tienen que pasar por las medidas minuciosas de implementar un servicio TCP seguro y eficiente, ¿por qué no escribir aplicaciones como un servidor web? ¿Es menos eficiente para un servidor web de front-end implementar un proxy inverso que para FCGI? ¿O es la especificación para FCGI mucho más simple que la de HTTP?