Pregunta Diferencias y diferencias / diferencias entre: Fast-CGI, CGI, Mod-PHP, SuPHP, PHP-FPM


Hay pocos "envoltorios" php diferentes (?). ¿Cuáles son las diferencias entre ellos? Intenté buscar en google, pero parece que no puedo encontrar información. (mod-php no es googleable).

¿Por qué podría elegir uno sobre otro?


59
2017-11-20 10:31


origen




Respuestas:


Las preguntas son un poco extrañas, no está claro si está solicitando solo PHP o su pregunta es más general.

Te daré una breve descripción del lado de PHP.

Primero, los dos protocolos:

  • Los scripts CGI son una forma de ejecutar un script del lado del servidor cuando llega una solicitud HTTP; esto no tiene nada que ver con PHP

  • FastCGI es un "mejor CGI": se sabe que el CGI es lento, el CGI rápido es un enfoque diferente con resultados mucho más rápidos; Esto tampoco tiene nada que ver con PHP.

Ahora las cosas relacionadas con PHP:

  • mod_php ejecuta un módulo PHP como Apache, es decir, la solicitud de PHP se ejecuta bajo el proceso de Apache con todo lo que lo acompaña. Los procesos de Apache se definen mediante la configuración de Apache, PHP se ejecuta con el permiso de Apache, etc.

  • PHP-FPM es la implementación de FastCGI de PHP; PHP-FPM se ejecuta como un servidor FastCGI independiente y Apache se conecta al servidor mediante el módulo de Apache, generalmente mod_fcgid o mod_fastcgi; Personalmente creo que esto es mucho mejor que ejecutarse como mod_php, pero depende de tus requisitos y también es un poco más complejo; en esta configuración, los permisos, los procesos relacionados y todo se ejecuta en la configuración de PHP, el usuario de PHP, etc. & Apache se conecta a PHP como a un servidor; en esta configuración también es posible tener un grupo de servidores PHP y tener un servidor PHP en una máquina físicamente diferente a la de Apache. Dicen que esto es casi tan rápido como usar el módulo de Apache y hay beneficios de un mejor control sobre la configuración de PHP.

  • SuPHP: se usó principalmente para solucionar algunos problemas de mod_php relacionados con los permisos; con mod_php los scripts PHP se ejecutan bajo el usuario / grupo de Apache; mod_suphp puede ejecutar los scripts en diferentes usuarios; Nunca lo usé, PHP-FPM ahora debería ser una opción mucho mejor

Así que básicamente:

  • CGI, Fast-CGI son protocolos; CGI es lento, Fast-CGI es mucho más rápido
  • mod_php (con guión bajo) y PHP-FPM son dos formas básicas de ejecutar PHP
  • mod_SuPHP es similar a mod_php pero puede cambiar el usuario / grupo con el que se ejecuta el proceso

121
2017-11-20 11:05



Tal vez aclararé lo que me inspiró para esta pregunta. Acabo de recibir un VPS con un panel ISPConfig (Opensource panel to admin pages). Allí puedo elegir una versión de PHP para servidor / lado. Y esos están listados allí. ¿Entonces, básicamente, parece que elegir PHP-FPM elige FastCGI con "envoltorios" adicionales? - Gacek
No sé qué utiliza realmente el panel ISPConfig, pero PHP ejecutado como PHP-FPM significa que PHP iniciará su propio servidor FastCGI integrado y escuchará las solicitudes a través del protocolo FastCGI. El servidor HTTP recibirá las solicitudes de Internet, las manejará como de costumbre y, en caso de que una página deba ejecutarse utilizando PHP, la solicitud se entregará a PHP a través del protocolo FastCGI y el resultado se enviará de nuevo al navegador. Piense en eso como el servidor HTTP que se encuentra entre el navegador y el servidor PHP (PHP-FPM FastCGI). PHP-FPM es una implementación del protocolo FastCGI. - Aleš Krajník
@ AlešKrajník gracias por esa explicación elaborada. Bueno, he estado intentando ejecutar php como usuario / grupo separado. Así que empecé con Su-exec y llegué a un callejón sin salida y luego un par de personas me recomendaron php-fpm, que me han explicado. Sin embargo, todavía estoy confundido acerca de los módulos mog_cgi, mod_cgid, mod_fastcgi, mod_fcgi y cómo funcionan con php-fpm. También leí en otro tutorial que estaban usando mod_fcgid y mod_proxy_fcgi. Cómo luchar para entender cómo se juntan todas las piezas. - David Okwii
El binario @landed PHP-FPM es parte de cada distribución de PHP desde 5.3.3 o 5.4.0 (verifique esto: php-fpm.org), para esa versión específica de PHP. - Aleš Krajník
php-fpm se trata de eliminar los costos de inicialización. php-fpm inicia previamente varios procesos de php, está listo para procesar las solicitudes y las deja dormir hasta que reciban las solicitudes, lo que significa que puede responder mucho más rápido que cgi tradicional, porque php ya se está ejecutando cuando llegan las solicitudes, en lugar de las CGI tradicionales. donde se inicia un nuevo proceso php para cada solicitud, también php-fpm no cierra el proceso php después de procesar las solicitudes, sino que continúa reutilizando los mismos procesos. - con una sobrecarga de 0 de iniciar y detener procesos, php-fpm responde mucho más rápido. iniciar y detener procesos lleva tiempo. - hanshenrik