2010-09-23 14 views
9

Zend Framework es un buen marco, pero no es muy rápido. ¿Puede decir si vale la pena usar Zend Framework para proyectos de alta carga, por ejemplo, para el servicio de marketing por correo electrónico que puede incluir alrededor de diez o mil millones de usuarios? ¿Es posible lograr un rendimiento aceptable con Zend Framework? ¿Alguien tiene tal expirience? Muchas gracias.Usando Zend Framework para proyectos de alta carga

Respuesta

13

Por lo que he visto, la defensa definitiva de rendimiento Zend Framework y recomendaciones para la optimización del rendimiento proviene de Padraic Brady en:

PHP Framework Benchmarks: Entertaining But Ultimately Useless

En particular, tenga en cuenta sus cuatro recomendaciones para la optimización del rendimiento:

  1. No utilice Zend_Application. Si bien Zend_App es ideal para crear bootstraps complejos y consistentes dentro de una estructura estandarizada, no viene sin un impacto de rendimiento significativo en el rendimiento de línea base. Un arranque más directo (típico de ZF hasta que Zend_App llegó) es mucho más rápido y también se puede hacer sin archivos de configuración.

  2. Omita usando el plugin ViewRenderer. Sin ViewRenderer, necesita configurar Zend_View manualmente y agregar llamadas de render() a Controladores. En realidad, es muy simple de hacer y es bastante rápido: nunca fue parte de la genética de ViewRenderer.

  3. Usar la carga automática. Strip require_once llamadas desde la biblioteca de framework para que los archivos innecesarios sean ignorados. Reemplace los usos de Zend_Loader_Autoloader con una función autocargador no tan loca. De hecho, reza Zend_Loader nunca se usa: realiza muchas operaciones de archivo que, hasta la fecha, nunca se me han explicado como que tienen algún valor.

  4. Precarga todo (¡Symfony 2 Preview lo hace!).Le compra algunas cookies de rendimiento y ecualiza la línea base de velocidad. Usar una secuencia de comandos de precarga simple no es tan difícil.

+0

¿Puede especificar cómo definir un "arranque más directo" sin usar Zend_Application? Gracias –

+0

@RezaSanaie: Consulte http://stackoverflow.com/a/10793058/131824 –

+0

¿Qué está precargando? ¿Puede dar un ejemplo? – danronmoon

0

Gran parte del framework, cualquier framework realmente, se usa para construir y administrar el desarrollo del proyecto pero el proyecto resultante es 'solo' php, html, css etc. lo mismo que cualquier otro sitio web de php. Entonces, ¿qué evidencia tiene, ese es el tiempo real frente a otros sitios marco y no construidos en el marco no evidencia anecdótica, que un sitio de proyecto Zend es lento.

Editar - respuestas a continuación - No creo que la estructura que utiliza el marco perjudicará el rendimiento. Puede ser más una cuestión de que PHP sea aceptable y de cuánto 'sobrecarga' se agrega con el diseño del sitio y la optimización de la carga, como JavaScript, etc. Me imagino que usar las pautas de Yui para minificar JavaScript y CSS y cargarlos en el el orden correcto y asegurarse de que el código PHP sea eficiente ayudará. También puede usar otras cosas estándar como DB Caching y Zend Accelerator acelerará las cosas. Una cosa a tener en cuenta sería la conexión DB. El uso de una capa ORM puede tener un impacto.

Sin embargo, volviendo a la pregunta original sobre el marco, creo que es similar a preguntar si el uso de Eclipse o Textmate tiene un efecto en la velocidad del sitio resultante.

+0

¿Cree que es posible lograr un rendimiento aceptable con Zend Framework para este tipo de proyectos? – Oleg

+0

No digo en absoluto que los marcos sean malos, por el contrario, creo que usar framework es muy útil. Me refiero al marco concreto. Quiero saber si vale la pena usarlo para un proyecto de carga alta. – Oleg

+0

Zend Framework parece ser un buen marco para mí, me pregunto qué hay sobre el rendimiento. – Oleg

4

le preguntas:

¿Es posible achive rendimiento aceptable usando Zend Framework? Alguien tiene tal expirience?

Sí, tengo experiencia en un sitio con millones de usuarios. Pero necesitas usar técnicas para lidiar con la carga alta. Almacenamiento en caché, etc. ...

Un CDN puede ayudar mucho. Mire en el desarrollo con la nube. Amazon puede ser un dolor para empezar, pero te ayuda a escalar si es necesario.

Supongo que lo que digo es que el Framework puede costarle un poco de rendimiento, pero ayuda a que el mantenimiento sea posible y lo construya más rápido (una vez que haya superado la curva de aprendizaje). Luego debe evaluar qué se debe hacer para mejorar el rendimiento (aunque ayuda mucho planificar lo que serán problemas obvios, desde el primer momento).

+0

Gracias por su respuesta. La aplicación que estamos tratando de hacer va a tratar con decenas o incluso cientos de miles de usuarios. Va a SAAS para el marketing por correo electrónico. – Oleg

+0

¿Cómo piensas si la elección del marco es muy crítica? – Oleg

+0

Me parece que la base de datos y los sistemas de archivos serán cuellos de botella. Las personas con las que trabajo dudan de que Zend Framework sea lo suficientemente bueno para el proyecto de alta carga y proponen el uso de Yii o algo así. Me parece que la influencia del marco no es demasiado para el rendimiento del sistema. Pero tal vez estoy equivocado. – Oleg

2

Conozco varias compañías que usan ZF en escenarios de alto rendimiento/alta carga. No sé cuáles puedo decir y cuáles no, pero algunas son compañías de medios que tienen que manejar programas de televisión populares. Otros manejan eventos deportivos en vivo. Otros son compañías multimillonarias que necesitan servir a sus organizaciones internas. Por lo tanto, ZF está siendo utilizado por muchas empresas que ejecutan sitios bastante de alta carga. Uno de nuestros casos de estudio es Fox Interactive (http://framework.zend.com/about/casestudies) y conozco a muchos otros clientes que lo utilizan para sitios web de alto rendimiento.

Zend Framework MVC, listo para usar, será bastante rápido. Mi blog vuelve en unos 100 ms sin almacenamiento en caché y hay una buena cantidad de cosas que suceden en mi página principal. Probablemente podría bajar eso a 50 ms con un poco de almacenamiento en caché interno (el almacenamiento en caché de la página completa podría bajarlo a un dígito ms, pero luego no toca ZF).

7

Hemos usado ZF en muchos sitios con mucho tráfico, y hasta ahora no hemos tenido problemas.Sin embargo, tuvimos que pasar por algunos aros bajos.

Algunas sugerencias:

  • uso Zend_Queue para ayudar con lotes de correo
  • uso Zend_Cache siempre que sea posible
  • Usar caché plug-in cargador
  • llamadas de Gaza require_once a favor de carga automática
  • Deshacerse de componentes que no quieres (Como se sugiere, usted no necesita pila MVC de CLI/mail)
  • Elegimos Esfinge en favor de Zend_Search_Lucene (enorme ganancia de rendimiento)

El fondo para nosotros ha sido la siguiente: el tiempo de desarrollo es mucho, mucho más caro que el hardware. La flexibilidad y una mayor reutilización del código superan por completo cualquier pérdida de rendimiento menor con la que tuvimos que lidiar. En su mayor parte, la sobrecarga de rendimiento fue muy fija.

2

Seconding Joe's answer. También he visto a ZF desplegado en algunos sitios que manejan millones de solicitudes y aún no han encontrado un problema. Cuando se trata de esa cantidad de tráfico, es una buena idea usar otras estrategias más allá de su marco, que incluyen, entre otros, el almacenamiento en caché y el uso de un CDN.

He encontrado que la mayoría de los marcos invocarán o crearán muchas instancias de clase por solicitud, lo que creo que es lo que hace que la gente diga que framework X es lento sin tener experiencia en el mundo real. Cualquier golpe que realice puede mitigarse fácilmente mediante el uso de un acelerador y el almacenamiento en caché.

Si ya tiene un equipo de desarrolladores que ha contratado, le sugiero que use lo que le parece más cómodo y con la que tiene más experiencia. En el mejor de los casos, podrán sintonizar su código para ese marco.

Cuestiones relacionadas