2008-08-16 11 views
16

¿Alguien tiene experiencia trabajando con aceleradores PHP como MMCache o Zend Accelerator? Me gustaría saber si el uso de cualquiera de estos hace PHP comparable a más rápido web-technologies. Además, ¿hay compensaciones por usar estos?PHP compilado?

+2

Debe cambiar el título a "PHP acelerado". No se trata de compiladores en absoluto, aunque hay muchas preguntas sobre la compilación de PHP. –

Respuesta

13

Tenga en cuenta que Zend Optimizer y MMCache (o aplicaciones similares) son cosas totalmente diferentes. Mientras Zend Optimizer intenta optimizar el código de operación del programa, MMCache almacenará en caché los scripts en la memoria y reutilizará el código precompilado.

Hice algunos puntos de referencia hace algún tiempo y puedes encontrar el results en mi blog (aunque en alemán).Los resultados básicos:

Zend Optimizer solo no ayuda en absoluto. En realidad, mis scripts fueron más lentos que sin optimizador.

Cuando se trata de cachés: * más rápido: eAccelerator * XCache * APC

Y: Usted quiere instalar una caché de código de operación!

Por ejemplo: alt text http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

Esta es la duración que se tardó en llamar a la página de inicio de wordpress 10.000 veces.

Edit: BTW, eAccelerator contiene un optimizador.

2

Dependiendo de la cantidad de código PHP que se ejecute realmente y el tiempo que lleve la ejecución, puede ser una gran ganancia. Ciertamente, no va a doler, pero la ganancia que ve dependerá en gran medida de donde se gasta su tiempo actualmente.

btw mmcache se ha convertido en un proyecto diferente ahora, se me olvida el nombre, pero Google te lo dirá.

3

Ambos son interesantes y proporcionarán un impulso de velocidad, ya que compilan el código fuente en una representación binaria que luego ejecuta el motor PHP.

Cualquier gran sitio web que se ejecuta con PHP (Facebook, por ejemplo) está ejecutando algún tipo de sistema de caché de código de operación como MMCache.

El problema es que no son muy fáciles de configurar dependiendo de su sistema.

0

¿Has echado un vistazo a Phalanger? Compila PHP a código .NET. Aquí están some benchmarks que muestran que puede mejorar dramáticamente el rendimiento.

+0

Referencia adicional: http://www.php-compiler.net/benchmarks – Eldros

0

Utilicé Zend Accelerator un poco en el día (2004-ish). Ciertamente dio algunas ganancias de rendimiento significativas en el código con el que podría funcionar, pero desafortunadamente el sistema que estaba usando estaba diseñado para cargar código de forma dinámica y luego evaluarlo, con lo que Zend Accelerator no pudo hacer mucho en ese momento (y yo ' creo que todavía no puede).

En el lado negativo, ciertamente vimos algunos problemas de almacenamiento en caché (donde el código sería modificado, pero la versión compilada se sincroniza con el cambio por una razón u otra). Me imagino que esos problemas probablemente ya se hayan solucionado.

De todos modos, no tengo ningún número de comparación difícil, y ciertamente no escribí el mismo sistema en diferentes entornos para comparar, pero para la gran mayoría de los sistemas, PHP no va a matar su rendimiento.

2

Uso APC en mis servidores de producción y funciona bastante bien de fábrica. Compílalo y agrégalo a PHP y no queda mucho por hacer. Lo reviso de vez en cuando solo para revisar las estadísticas, pero como utilizo mucho MVC, todos los archivos principales (enrutadores, controladores, etc.) rara vez cambian día a día, por lo que el código se mantiene compilado y se ejecuta de manera bastante eficiente. .

1

actualmente usamos la APC, gratis y solo teníamos un simple plug and play en nuestros servidores en vivo. Proporcionó un gran aumento en el rendimiento de nuestro sitio, especialmente a medida que aumentaba el tamaño del proyecto. También tengo el apc.stat deshabilitado por lo que no comprueba si el código se ha actualizado, por lo que cada vez que tenemos que actualizar el código en el sitio en vivo, reiniciamos apache.

1

Uso APC, y puedo dar fe de que puede reducir drásticamente la carga de CPU y E/S en un servidor de aplicaciones si mantiene una alta tasa de caché. No solo evita que tengas que compilar, sino que también evita que tengas que leer los archivos php desde el disco. (es decir, los códigos de bytes se sirven directamente desde la memoria principal, por lo que es súper rápido). Disminuye la velocidad para representar una sola página y aumenta las solicitudes por segundo que su servidor puede manejar.

Si utiliza RedHat o CentOS, la instalación de APC es super simple:

yum install php-devel httpd-devel php-pear 
pecl install apc 
echo "extension=apc.so" > /etc/php.d/apc.ini 
# if you're using SELinux: 
chcon "system_u:object_r:textrel_shlib_t" /usr/lib/php/modules/apc.so 
/etc/init.d/httpd restart 

Se preguntó acerca de inconvenientes. El único inconveniente es que requiere algo de memoria. El valor predeterminado de APC es de 30 MB, pero puede ajustarse y el costo de un poco de memoria se compensa con la mayor velocidad y tasa de respuesta.

1

Las pruebas de BlaM incluyeron todas las llamadas DB realizadas por WordPress. Cuando realice menos llamadas a bases de datos, verá que la ganancia de rendimiento de los cachés de códigos de operación será aún más dramática.

+0

de acuerdo. También tuve otras pruebas. Pero decidí buscar un ejemplo del "mundo real";) – BlaM

Cuestiones relacionadas