PHP: ¿Cuáles son las ventajas de FastCGI sobre mod_php?

Respuestas:

37

Usando mod_php, cada trabajador de Apache tiene todo el intérprete PHP cargado. Debido a que Apache necesita un proceso de trabajo por solicitud entrante, puede terminar rápidamente con cientos de trabajadores de Apache en uso, cada uno con su propio intérprete PHP cargado, que consume grandes cantidades de memoria.

(Tenga en cuenta que esto no es exactamente cierto, Apache le worker_mpmpermite atender muchas solicitudes con un solo trabajador Apache con subprocesos. Sin embargo, incluso en 2009, esta no es la forma recomendada de implementar PHP debido a problemas sospechosos de subprocesamiento con las extensiones PHP).

Al usar PHP en modo fast_cgi (usando algo como spawn-fcgi del paquete lighttpd) tiene los siguientes beneficios

  • ajustar el número de trabajadores PHP por separado del número de conexiones entrantes
  • le permite poner a sus trabajadores PHP en un servidor diferente, o escalar a través de muchos servidores sin cambiar su nivel web
  • le brinda flexibilidad para elegir un servidor web diferente, como nginx o lighttpd
  • le permite ejecutar su aplicación PHP en un dominio de seguridad diferente en su servidor web
Dave Cheney
fuente
5

FastCGI significa que los bits php no se están ejecutando en el mismo proceso que los bits apache, a diferencia de mod_php. Esta separación puede tener algunas ventajas definitivas cuando se trata de reiniciar el servidor o tratar con aplicaciones fuera de control: en el caso de mod_php eso significa que es el proceso de apache el que está "fuera de control", pero bajo fastcgi es solo un proceso con el que apache está hablando, así que No es necesario desmontar todo el servidor.

pjz
fuente
4

Otra ventaja que aún no se menciona es el hecho de que con mod_fcgid(que es una implementación más nueva para usar FastCGI en Apache) y suexec puede realizar configuraciones donde diferentes vhosts usan diferentes usuarios de Linux para la ejecución, lo que puede ser un beneficio de seguridad real en un escenario de alojamiento compartido .

Con mod_php, todos los vhosts comparten el mismo usuario, que es el usuario de Apache. Esto puede conducir a problemas de seguridad.

Martin C.
fuente
Depende del MPM utilizado en esta configuración particular de httpd de Apache. Por ejemplo, con MPM-itk ( mpm-itk.sesse.net ) es posible usar mod_php y tener los scripts (o mejor: los procesos httpd) ejecutándose en el contexto de otro usuario.
joschi 01 de