Una pregunta muy básica para usted. Acabo de encontrar dos archivos ejecutables php-cgi.exe
y php.exe
en la carpeta bin del servidor WAMP en mi computadora portátil. Estoy aprendiendo PHP y no pude descubrir la diferencia. ¿Cuál es la diferencia entre ellos?¿Cuál es la diferencia entre php cli y php cgi?
Respuesta
PHP CLI es la interfaz de línea de comandos para PHP (por ejemplo, para la creación de aplicaciones independientes)
PHP CGI es la interfaz común de pasarela para PHP (por ejemplo, para aplicaciones web)
y PHP es el preprocesador de hipertexto Php. ¿Es eso realmente una respuesta? No lo creo – Trix
CLI es para scripts de línea de comando, CGI es para solicitudes web
php-cgi
es para un servidor web. Entre otras cosas, maneja los encabezados HTTP por usted.
La versión de CLI está pensada para ejecutarse en una línea de comandos (por lo tanto, "Interfaz de línea de comandos"). Éste no maneja los encabezados ni ninguna otra cosa relacionada con el servidor.
php-cli
es para ejecutar PHP en la línea de comandos. php-cgi
hace cosas adicionales para usted, como encabezados HTTP y ciertas modificaciones de seguridad.
Dicho esto, considere instalar un módulo FastCGI y usar PHP's FastCGI interface. Esto debería ejecutar PHP notoriamente más rápido que php-cgi. Creo que el módulo Apache FastCGI estándar es mod_fcgid
.
De http://www.php-cli.com/php-cli-cgi.shtml
Estas son las diferencias más importantes entre CLI y CGI:
- A diferencia del CGI SAPI, CLI escribe sin cabeceras a la salida por defecto
- Hay algunos php.ini directivas anuladas por CLI SAPI porque no tienen sentido en entornos de shell:
- html_errors: por defecto CLI es FALSO
- implicit_flush: por defecto CLI es TRUE
- max_execution_time: por defecto CLI es 0 (ilimitado)
- register_argc_argv: por defecto CLI es TRUE
- ¡Puede tener argumentos de línea de comando con su script! La variable "$ argc" le proporciona una cantidad de argumentos pasados a la aplicación . Y la matriz "$ argv" le ofrece una matriz de los argumentos reales
- Hay 3 nuevas constantes definidas para el entorno de shell: STDIN, STDOUT, STDERR. Todos ellos son manejadores de archivos para los dispositivos shell correspondientes . Por ejemplo, STDIN es el controlador para fopen ('php: // stdin', 'r'). Entonces, puede leer una línea de STDIN como esto: $ strLine = trim (fgets (STDIN)) ;. ¡STDIN ya está definido para por PHP CLI!
- PHP CLI no cambia el directorio actual al directorio de la secuencia de comandos ejecutada .El directorio actual para el script sería el directorio donde su tipo de comando PHP CLI.
- Hay varias opciones ÚTILES disponibles para la CLI de PHP. ¿Qué le permitirá obtener información valiosa sobre su configuración php, su script php o ejecutarla en diferentes modos.
- En PHP 5 hubo algunos cambios en los nombres de archivo CLI y CGI. En PHP 5, , la versión CGI se renombró a php-cgi.exe (anteriormente php.exe) y , la versión de CLI ahora se encuentra en el directorio principal (anteriormente cli/php.exe).
- En PHP 5 también se introdujo un nuevo modo: php-win.exe. Esto es igual que la versión CLI, excepto que php-win no produce nada y por lo tanto no proporciona consola (no aparece "dos box" en la pantalla). Este comportamiento es similar a PHP GTK.
Hola, ¿sabes si tiene algún tiempo de espera? Quiero decir si es necesario ejecutar un script que tarde demasiado en ejecutarse. ¿Es una buena opción ejecutar en CLI? –
Sí, seguro. En CLI max_execution_time: el valor predeterminado es 0 (ilimitado). –
Esto podría darle una comprensión más amplia de su diferencia:
CGI: (Common Gateway Interface) es una especificación de "protocolo" para la transferencia de información entre un servidor web y un programa CGI .
Un programa CGI es cualquier programa diseñado para aceptar y devolver datos que cumplan con la especificación CGI.
Básicamente es una forma de ejecutar un script del lado del servidor (PHP, Perl, Python, ...) cuando llega una solicitud HTTP.
CGI es muy lento en comparación con otras alternativas.
FastCGI: es una mejor CGI.
Fast CGI es un enfoque diferente con resultados mucho más rápidos.
Es un CGI con solo unas pocas extensiones.
La implementación de FastCGI ya no está disponible, a favor de PHP-FPM.
PHP-FPM: (FastCGI Process Manager), que es una mejor aplicación FastCGI FastCGI que el anterior.
Funciona como un servidor FastCGI independiente.
En general, es una interfaz PHP para los servidores web (Apache, Nginx ..) que permite que el Servidor Web interactúe con PHP.
A diferencia de PHP-CLI que es una interfaz de línea de comandos para que PHP permita a los usuarios interactuar con PHP a través del terminal.
mod_php: un módulo de Apache para ejecutar PHP.
Ejecuta scripts PHP dentro del servidor web directamente como parte del servidor web sin comunicarse con un programa CGI.
mod_SuPHP: es similar a mod_php pero puede cambiar el usuario/grupo que el proceso se ejecuta bajo.
Básicamente soluciona algunos problemas de mod_php relacionados con los permisos.
- 1. En PHP, ¿cuál es la diferencia entre 'stripslashes' y 'stripslashes'?
- 2. ¿Cuál es la diferencia entre ++ $ i y $ i ++ en PHP?
- 3. En PHP, ¿cuál es la diferencia entre hash y mhash?
- 4. php, ¿cuál es la diferencia entre strtolower y mb_strtolower?
- 5. ¿Cuál es la diferencia entre 'y "en PHP
- 6. ¿Cuál es la diferencia entre iconv() y mb_convert_encoding() en PHP?
- 7. ¿Cuál es la diferencia entre session_unset() y session_destroy() en PHP?
- 8. ¿Cuál es la diferencia entre $ a y $$ a en php?
- 9. Php: ¿cuál es la diferencia entre $ var y & $ var?
- 10. ¿Cuál es la diferencia entre Managed C++ y C++/CLI?
- 11. ¿Cuál es la diferencia entre C#, .NET y CLI?
- 12. Diferencia entre Javascript y PHP
- 13. ¿Cuál es la diferencia entre require e include con php?
- 14. ¿Cuál es la diferencia entre PHP require e include?
- 15. ¿Cuál es la diferencia entre esas expresiones PHP si?
- 16. ¿cuál es la diferencia entre mp4 y mpegts?
- 17. ¿Diferencia entre ruptura y continuar en PHP?
- 18. ¿Cuáles son las diferencias entre mod_php y cgi php script?
- 19. Diferencia de PHP entre shuffle y array_rand
- 20. Diferencia entre objeto y clase en PHP?
- 21. Diferencia PHP entre enteros y enteros
- 22. ¿Cuál es la diferencia entre split() y explosión()?
- 23. ¿cuál es la diferencia entre GLOBALS y GLOBAL?
- 24. ¿Cuál es la diferencia entre MySQL, MySQLi y PDO?
- 25. PHP MYSQL - Diferencia entre 127.0.0.1 y localhost
- 26. ¿Cuál es la diferencia entre "GLOBAL" y la variable "ESTÁTICA" en PHP?
- 27. PHP: ¿Cuál es la diferencia entre la clase SimpleXMLElement() y SimpleXML_load_string()?
- 28. ¿Cuál es la diferencia entre SplObjectStorage :: contains y SplObjectStorage :: offsetExists?
- 29. ¿Cuál es la diferencia entre php5 y php5-dev
- 30. ¿Cuál es la diferencia entre escapeshellarg y escapeshellcmd?
posible duplicado de [Diferencia entre la ejecución de php desde la línea de comandos y desde el lado de Http] (http://stackoverflow.com/questions/3016281/difference-between-executing-php-from-the-commandline-and-from -the-http-side) – mario
@mario ¿cómo se puede encontrar el duplicado? No pude encontrar ningún duplicado. – user1208865