2010-05-02 36 views
11

¿Cuáles son las diferencias entre mod_php y cgi php script?¿Cuáles son las diferencias entre mod_php y cgi php script?

Quiero decir, ¿por qué es mejor (¿es?) Utilizar mod_php en lugar de simples scripts php, ejecutándolos como CGI?

Gracias

+1

También puede ejecutar PHP usando FastCGI que elimina la mayor parte de la sobrecarga de CGI, y le permite ejecutar un MPM apache enmascarado (PHP tiende a no gustar MPM roscados) – Reece45

+0

@ Reece45, MPM? – Pacerier

+0

@Pacerier Es un apache específico módulo (módulo de procesamiento múltiple) que implementa diferentes métodos para manejar múltiples solicitudes a la vez. Consulte http://httpd.apache.org/docs/2.4/mpm.html para obtener más detalles. – Reece45

Respuesta

10

Al utilizar CGI: un proceso PHP es lanzado por Apache, y es que el proceso PHP que interpreta el código PHP - Apache no sí.

En teoría, se debe crear un proceso de PHP distinto para cada solicitud, lo que hace las cosas más lentas: Apache tiene más trabajo por hacer para responder a una solicitud.
(Bueno, como ha señalado @ AlReece45 en un comentario, esto se puede hacer un mejor uso de FastCGI)


Cuando se usa PHP como un módulo de Apache (mod_php o mod_php5), el intérprete de PHP es tipo de "incrustado" dentro del proceso Apache: no hay un proceso PHP externo.

Lo que significa:

  • No se bifurcan para responder a una petición (más rápido)
  • una mejor comunicación entre Apache y PHP


En general, yo diría que mod_php es la solución eso es lo que más se usa.

+3

Ingrese a la derecha de la etapa, FastCGI. FastCGI tiene las ventajas de CGI y escala mucho mejor. :) mod_php puede ser muerte en un servidor cargado. – Xorlev

+0

@Xorlev para el servidor cargado, piense en nginx + phpfpm;) –

+1

¡php en cualquier forma puede causar la muerte para la humanidad! ;-) –

3

Normal CGI requiere que se genere el proceso para cada solicitud en el momento de la solicitud.

mod_php requiere que usted use apache hinchado en lugar de slick nginx o lighttpd. Además, "una mejor comunicación entre Apache y PHP" mencionada por Pascal puede dañar a apache (daña a cualquiera que se desarrolle en php! ;-)).

FastCGI le permite separar php del servidor web (posiblemente lo ejecute en el host diferente).

1

Además, php.net acaba de publicar una vulnerabilidad actual, donde la divulgación del código fuente es posible si está utilizando mod_cgi ejecutar PHP y su versión de PHP es más antigua que PHP 5.3.12 oPHP 5.4.2.

http://www.php.net/archive/2012.php#id2012-05-03-1

Patch mediante la actualización o la aplicación de una regla mod_rewrite.

Cuestiones relacionadas