2009-09-23 18 views
15

Ok, pongámoslo de una manera más suave: ¿El legado cgi (interfaz de puerta de acceso común) es heredado?¿Está cgi muerto?

si? ¿no?

¿En qué circunstancias comenzaría un proyecto hoy (uno que no tiene que interactuar con sistemas heredados o bibliotecas) use cgi?

+0

Imágenes generadas por computadora? Diría que todavía se usan bastante;) – Aistina

+0

interfaz de puerta de enlace común – flybywire

+4

le CGI est mort! Vive le FCGI! – beggs

Respuesta

10

Está lejos de estar muerto en realidad. A pesar de los gastos generales, muchas empresas de alojamiento web virtual ahora están ejecutando PHP como CGI por cuestiones de seguridad, ya que se puede usar con suEXEC. suEXEC significa que sus scripts se ejecutan bajo sus privilegios de usuario de Unix reales y, por lo tanto, están restringidos por la separación de privilegios del sistema operativo. Este es un mucho modelo de seguridad más robusto que la alternativa open_basedir específica de PHP.

Además, CGI es realmente una interfaz muy simple versátil, su compatibilidad nunca sale de los servidores web. Muchas interfaces más nuevas como FastCGI y SCGI heredan la forma en que CGI pasa los encabezados HTTP y otras variables a la aplicación web y viceversa. Incluso SAPI de PHP imita esto con su variable $_SERVER. Entonces CGI no va a desaparecer, simplemente está siendo desarrollado.

+2

Es igualmente posible ejecutar FastCGI a través de suexec, oa través de un administrador de procesos que es completamente externo al servidor web, y el soporte de PHP para FastCGI está integrado. Pero no miraría lo que hace el alojamiento compartido un indicador del futuro de lejos. :) – hobbs

0

CGI no es muy adecuado para un alto rendimiento.

Pero mi consejo es ignorar eso, escribir para un idioma o biblioteca que admita SAPI múltiples, y luego usar lo que mejor se adapte a cada situación.

+0

El rendimiento no es realmente el problema aquí. El principal problema es que es difícil usar objetos persistentes, ya que su proceso siempre muere. –

1

¿Qué tal el que requiere un rendimiento computacional extremo?

+0

CGI no es tan bueno para el rendimiento. –

+3

CGI (CGI no rápido) generalmente no es bueno para el rendimiento porque no habrá optimización para la publicación web (ya que es probable que estén escritos por un lenguaje diseñado por la web). Sin embargo, si su CGI es intensivo en cómputo con poca interacción (menos servicio web pero más cómputo), CGI escrito por compilación a lenguaje nativo definitivamente rendirá. Es por eso que uso la palabra "rendimiento computacional". Pero, de nuevo, este tipo de tareas es raro. – NawaMan

1

No está del todo muerto. Pero fcgi parece mucho mejor enfoque. Aunque oficialmente no es compatible con, digamos, Apache. Necesita usar modificaciones laterales para que funcione.

+0

... que es una consideración bastante seria, teniendo en cuenta el porcentaje de servidores web que ejecutan Apache. – Thomi

+0

lighttpd es cada vez más popular a pesar de – Roch

8

Legacy? Absolutamente. ¿Muerto? Bueno, es soporte de vida. Dudo que realmente "muera" en el futuro previsible. Aún puede usar CGI para escribir un tipo de script muy pequeño muy si tiene un servidor sin otro medio de ejecutar una aplicación web y es demasiado perezoso para configurarlo.

¿Cuál es otra razón? Tal vez tengas un programa que filtra la memoria o los recursos como un colador, pero debes ejecutarlo de todos modos, para asegurarte de que todo se limpia al finalizar el proceso cada solicitud ...

Pero en serio, para cosas Eso realmente materia, creo que los beneficios de pasar a cualquier tipo de sistema con procesos persistentes superan los costos en un poco. Y en mi experiencia, también fomenta la escritura de código mejor organizado, porque el tipo de inicialización que necesita para tener una aplicación modulable se traduce en "tiempo de inicio inaceptable" en un entorno CGI.

1

No consideraría CGI muerto tampoco. Después de todo, es compatible con todos los principales servidores web.

Una razón no mencionada para iniciar un proyecto CGI podría ser la protección de la propiedad intelectual. Por ejemplo, puede decidir escribir un programa CGI en C++ y permitir que su cliente instale la aplicación en un servidor que usted no controla.

Tal vez su producto heredado tiene una gran cantidad de negocios implementados como bibliotecas. (.dll, .so .lib .a, etc.) En este caso, en realidad, puede ser más rápido comercializar para seguir con c/C++ cuando se implementa una interfaz web.

¿Tal vez trabajas en una tienda Delphi? Si 10 de cada 10 ingenieros en su tienda escriben Delphi, escribir su nueva aplicación en PHP puede no ser el camino más rápido al mercado.

Así que, en resumen, muchas variables que entran en juego al decidir qué tecnología usar para usted nuevo producto que incluye:

  • Quién es su cliente?
  • ¿Cuál es su punto de partida?
  • ¿Cuáles son sus activos y recursos?
  • ¿Qué te gusta?
  • ¿Con qué debe interactuar su software?
  • ¿Cómo se implementará la aplicación?