PHP y rendimiento

17

Siempre escucho que PHP es para sitios web medianos y pequeños, mientras que .NET y Java para aplicaciones empresariales. Mi pregunta es sobre PHP. ¿Por qué PHP no es una buena opción para aplicaciones web empresariales? ¿Es porque si la aplicación web se hace más grande, entonces PHP será más lento ya que es un lenguaje interpretado?

Sé que el mundo corporativo elegirá .NET o J2EE por la integración con sus productos y por los servicios de back-end, etc. Sin embargo, si solo tenemos PHP para crear sitios y aplicaciones web, ¿cómo podemos usarlo para que funcione bien con grandes sitios?

En resumen, ¿existe una relación entre el rendimiento de PHP y el tamaño del sitio web? ¿Cuáles son los factores que hacen que PHP no sea una opción adecuada para sitios grandes?

Naif
fuente
1
Mediawiki (el motor de wikipedia) está escrito en PHP y lo hicieron funcionar bien, pero eso no prueba nada. Podría ser un caso nicho.
Michael K
2
@MichaeltheGhost usando sitios en el top 50 de Alexa (y tal vez incluso un poco más) son ejemplos pobres porque su volumen está en un nivel tan extremo que sus soluciones están altamente personalizadas y ajustadas para ese nivel de tráfico y no son realmente las mismas tecnología más.
Ryathal
1
Facebook también está usando PHP. Tenga en cuenta también que esto significa cosas sobre la escalabilidad, no el rendimiento, pero conoce la diferencia, ¿verdad? Otro ejemplo es freemobile, que reescribió su sitio web en PHP desde Java, por razones de escalabilidad.
deadalnix
"Actualmente, la mayoría del código PHP en Mediawiki en la Fundación Wikimedia usa el compilador HHVM JIT, aunque algunos servicios continúan usando Zend Engine PHP". en.wikipedia.org/wiki/Wikipedia:FAQ/Técnico es lo que Facebook creó para acelerar php (es un traductor de php a c ++ que luego compilan). funciona, simplemente no se puede decir solo porque está escrito en php, la velocidad siempre será la misma. Depende de lo que hagas con el código en ese sentido ...
pqsk

Respuestas:

19

El rendimiento probablemente no sea uno de los factores. Para un lenguaje dinámico, PHP realmente funciona bastante bien; Dependiendo de la tarea, podría o no superar otras tecnologías. El modelo de aplicación simplemente es demasiado diferente para compararlo directamente con Java o ASP.NET. Incluso si hay una diferencia de velocidad medible, no es grande y probablemente sea lineal, lo que significa que puede resolverse lanzándole más hardware. Además, el lenguaje de programación en sí mismo rara vez es el cuello de botella: los algoritmos, el acceso a la base de datos, el ancho de banda de la red y la E / S en general son los culpables habituales, a menos que esté escribiendo algo realmente intensivo en CPU.

Las razones para usar ASP.NET o Java sobre PHP que son más probables incluyen:

  • Integración de plataforma. ASP.NET ofrece una amplia integración con .NET y el sistema operativo Windows subyacente.
  • Propósito general. PHP fue diseñado específicamente para la web, mientras que .NET y Java son plataformas de uso general. Usando Java o .NET, puede agregar tanto frontales de escritorio como web en el mismo código compartido con poco esfuerzo, mientras que PHP no es muy adecuado para escribir aplicaciones de escritorio.
  • Funciones de organización del código. Java y .NET fueron diseñados para OOP desde el principio, mientras que OOP en PHP es algo de último momento. PHP introdujo espacios de nombres muy recientemente, y son limitados y torpes en comparación con lo que ofrecen .NET y Java. La programación de estilo empresarial generalmente depende en gran medida de OOP, lo que hace que PHP sea el candidato menor.

Otra razón para el efecto percibido es que PHP es gratuito (como en la cerveza) y omnipresente: cada empresa de alojamiento web compartido barato tiene PHP en su paquete estándar, pero un servidor .NET o Java le costará mucho más. En consecuencia, una gran cantidad de sitios web pequeños usa PHP, no porque sea la mejor herramienta para el trabajo, sino la única disponible.

Eso no quiere decir que PHP no sea adecuado para grandes proyectos, simplemente no funciona bien con el tipo de programación 'empresarial'. Sus puntos fuertes se encuentran en otra parte, y si puede aprovecharlos, puede crear aplicaciones a gran escala tan fácilmente como lo haría con cualquier otra tecnología web.

tdammers
fuente
2
Una pequeña objeción, puede obtener el alojamiento compartido ASP.NET por el mismo precio que el alojamiento compartido LAMP. El problema es que los primeros lugares que encuentran la mayoría de las personas cuando buscan son aquellos que se comercializan en pequeñas y medianas empresas y son más caros.
jfrankcarr
+1, esto está muy bien dicho y resumido. El cuello de botella para la mayoría de las aplicaciones de bajo rendimiento rara vez es el idioma.
GrandmasterB
1
cierto, pero no piense que Java es una solución: he tenido la desgracia de usar muchas aplicaciones 'Enterprise' de compañías como Oracle. Casi todos ellos podrían ser reemplazados por una aplicación PHP OSS con poca reducción en la funcionalidad, pero un gran aumento en el rendimiento y la usabilidad.
gbjbaanb
3
@gbjbaanb: Java no es una solución en este contexto porque no hay problema. Y si algo es de código abierto o no, no tiene absolutamente nada que ver con el tema.
tdammers
@GrandmasterB sí y no. Java, por ejemplo, tiene muchas primitivas sincronizadas internamente y PHP no. Se requiere más disciplina para escribir código Java escalable. Freemobile es un ejemplo real de ese efecto. Pero, como la escalabilidad no solo depende de la interfaz (las bases de datos, por ejemplo, son muy importantes aquí), debe pensar en ello de todos modos.
deadalnix
13

Está confundiendo el tráfico ("sitio web pequeño y mediano" generalmente significa un sitio web con tráfico pequeño a mediano), con el grado de complicación de la lógica empresarial (sitio web simple versus solución empresarial). En el segundo caso, el rendimiento no es el factor clave.

Por ejemplo, Facebook es un sitio web de alto tráfico, pero no es una aplicación empresarial. Por otro lado, hay una gran cantidad de intranets basadas en servidores de aplicaciones Java, que no podrían manejar el tráfico de sitios web de tamaño medio.

El rendimiento basado en PHP no es la mejor opción, pero tampoco es tan malo. Especialmente comparado con otros lenguajes dinámicos. Sin embargo, una vez más, el rendimiento bruto no es el factor más importante. Crear sitios web de alto tráfico se trata más de optimizar la escalabilidad a nivel arquitectónico.


¿Por qué PHP es tan despreciado por la empresa? Hay pocas causas, primero sería su terrible reputación de seguridad . En segundo lugar, se percibe como un lenguaje para los aficionados que crean código de espagueti HTML-PHP feo e inmanejable. Esa percepción persiste, a pesar de que existen marcos MVC maduros. Supongo que tener el autor original de PHP argumenta que no necesitas un marco no ayuda. El hecho de que estos aficionados despistados con poca o ninguna habilidad de programación se llamen a sí mismos "programadores PHP" tampoco ayuda. La tercera razón es que cualquier programador experimentado estará de acuerdo, que PHP está mal diseñado como lenguaje. Puedes ver claramente que fue diseñado por un webmaster,

Y sí, en la empresa se trata de la integración del sistema, donde PHP tampoco brilla. Con suficiente esfuerzo puede crear módulos C. Hay un puente PHP-Java, que es bastante tedioso de usar. Más allá de eso no tienes mucho. Los intentos de crear Boost :: PHP (integración con C ++) han fallado. Los clones PHP que se ejecutan en JVM están lejos de tener una compatibilidad cercana al 100% con PHP (como nota al margen, no existe una definición formal del lenguaje PHP, la única referencia es la implementación predeterminada).

vartec
fuente
6

No tengo idea de por qué las personas afirman que PHP es para sitios web pequeños y medianos. Que yo sepa, esto no es cierto. Sé que algunos sitios web respaldados por PHP que comenzaron siendo pequeños y luego se convirtieron en los 100 mejores sitios web en mi país. Todavía usan PHP y no tienen planes de cambiar nada al respecto.

Lo que podría llevar a las personas a tal conclusión es que, en el caso de Java (y supongo que también con .NET), el escalado de aplicaciones es un término que se menciona con frecuencia en la documentación y la literatura. La mayoría de los servidores de aplicaciones soportan algún tipo de agrupación que permite la rápida adición de "caballos de fuerza" junto con el crecimiento de la popularidad. En el caso de PHP, debe construir el clúster usted mismo. Puede hacerlo de muchas maneras, utilizando diferentes componentes y debe conocer un poco o dos sobre el funcionamiento interno de PHP. Esto probablemente hace que la gente piense que con un solo servidor PHP (y, por lo tanto, un sitio web pequeño o mediano) es un callejón sin salida para PHP.

Jacek Prucia
fuente
3

No existe tal cosa como solo una aplicación web empresarial. En el mundo empresarial, generalmente tiene un sistema empresarial completo, donde el elemento web es bastante pequeño en comparación con todo el sistema. Hay muchos sistemas debajo de la web que realizan procesamiento por lotes, mensajes en cola, integración empresarial, puertas de enlace y muchos más. El evento en la parte superior podría no ser solo

Si bien PHP es bueno para la web, no es tan bueno para los otros tipos de sistemas distribuidos. Y dado que hace todos estos sistemas en Java o .NET, también es fácil construir la pila web en la misma plataforma en lugar de en PHP.

m3th0dman
fuente
1

Diría que los problemas con PHP se derivan menos del rendimiento que un historial de vulnerabilidades de seguridad. Si bien es indudablemente posible escribir un sitio web de cualquier tamaño o complejidad particular en PHP y aún mantener la seguridad, a medida que aumenta la complejidad, mantener la seguridad tiende a ser más difícil.

Java, por otro lado, fue diseñado con al menos algunas ideas sobre seguridad desde el primer día. Aunque esos no encajan completamente con la mayoría de las implementaciones actuales (el pensamiento original se centraba principalmente en los applets, no en los servlets), ese énfasis significa que sus características tienden a encajar mejor con la producción de código seguro. Y, por supuesto, tampoco se ha detenido, ya que los applets son en su mayoría un problema muerto ahora, Java se ha redefinido para enfatizar el papel del lado del servidor que ahora ocupa (en su mayoría).

Dado que .NET al menos intenta competir casi directamente con Java, proporciona casi el mismo tipo de características y capacidades a este respecto. Puede discutir (y los partidarios de ambos bandos lo hacen) sobre si Sun o Microsoft hacen un mejor trabajo a este respecto, pero el simple hecho de que ambos tengan equipos de personas realmente tratando de trabajar les da una ventaja bastante seria sobre PHP en este aspecto. el respeto.

Jerry Coffin
fuente
0

1) Rendimiento: aquí se están confundiendo varias respuestas sobre ese punto.
El proyecto Phalanger (que utilicé con éxito en el pasado) le permite usar el código C # dentro de PHP y viceversa, o cambiar completamente de un idioma a otro. Probablemente tendrá que hacer algunos cambios, pero a medida que continúan trabajando en ello, cada vez es mejor.
Mi punto es que descubrieron que hay un factor promedio de velocidad 2.5 a favor de C # (o .NET en general, VB haría lo mismo, al final es MSIL).
Echa un vistazo a sus pruebas con Wordpress, atrajo a muchos desarrolladores.

Ahora no lo hemos visto aún, pero siempre está el tipo que te va a decir que FaceBook está escrito en PHP. Incorrecto. Fue, originalmente, hasta que se dieron cuenta de su error y escribieron HipHop para transformarlo a C ++.

EDITAR: Al parecer, el último bloque no está claro, así que lo que quise decir es que FaceBook está escrito en PHP, pero HipHop lo hace EJECUTAR como C ++, para mejorar la velocidad general, PORQUE PHP es lento.

2) Seguridad: como ya se ha dicho, PHP tiene una larga historia de problemas de seguridad.

3) Tiempo de desarrollo: Hacer un sitio web en PHP tiende a ser más fácil, especialmente con los marcos y todos los "creadores de sitios" disponibles. Hacer un sitio web PHP bueno, confiable y seguro es otra historia.

Louis Kottmann
fuente
En cuanto a lo de Facebook / HipHop, no cambia mucho. Todavía escriben declaraciones PHP, ¿no? También hay un compilador de PHP a Java. Si compilo todo mi código PHP con él, ¿significa que mi sitio está realmente escrito en Java?
Jacek Prucia
No significa que ES Java, significa que se ejecuta como tal.
Louis Kottmann
Ok, tienes razón, pero ¿puedo afirmar que mi sitio está escrito en PHP? En caso afirmativo, cualquiera también puede afirmar que Facebook está escrito en PHP. En otras palabras, todo se reduce a cómo entiendes el término "lenguaje de programación". ¿Es solo la combinación de declaraciones válidas o también es un entorno de tiempo de ejecución? Prefiero el primer significado y es por eso que lo de HipHop no cambia mucho para mí. Así que soy el tipo de FaceBook que mencionaste :)
Jacek Prucia
Muy bien, lo aclararé. Pero para el registro, estoy bastante seguro de que la mayoría de los lectores entendieron mi punto.
Louis Kottmann
No fue un error escribir Facebook originalmente en PHP. Cuando descubrieron que no podía seguir el ritmo de escalabilidad que vieron, solucionaron el problema con HipHop. Supongo que esto significa que usar PHP es una muy buena opción para todos los sitios web. Dicho esto, Slashdot usa perl directo y resolvió el problema de escala, wikipedia usa PHP simple y tampoco tiene problemas de escala.
gbjbaanb