2009-11-21 26 views
8

He estado escribiendo PHP durante años, y he usado todos los frameworks bajo el sol, pero una cosa siempre me ha molestado ... y es que todo el asunto tiene que ser interpretado y ejecutado cada vez que alguien le dice a mi servidor que quiero que la página sea servida.¿Aumenta la velocidad de PHP?

Experimenté con el almacenamiento en caché, FastCGI, Zend Job Queue (y los complementos de Symfony que hacen similares, así como mis propias soluciones basadas en bases de datos que implementan la clase System_Daemon para ejecutar procesos en segundo plano) y Logré hacer que mis aplicaciones fueran bastante rápidas usando todas esas cosas ... pero no puedo superar el bloqueo mental de mis archivos de configuración, las funciones de verificación del sistema/entorno y todas las cosas que solo deberían cargarse UNA VEZ ... carga cada maldito momento alguien golpea mi página.

lo tanto, mi paseo conduce a la siguiente Q--

¿Hay algún método/técnica para cargar determinados aspectos de PHP en la RAM para que cuando se solicita esa página, todos mis archivos settings.yml, las comprobaciones del sistema, los archivos de marcos, las páginas almacenadas en la memoria caché, etc. se pueden cargar directamente desde la memoria sin siquiera tocar la HD ... o tener que pasar por el mismo mecanismo de carga 50,000 veces al día para iniciar el programa?

Si no hay nada en PHP ... ¿hay otros lenguajes 'web' que se puedan compilar de esta manera, para permitir verdaderas aplicaciones init-one?

Respuesta

9

Creo que deberías probar memcached, si estás hablando de almacenar en caché los datos. Creo que PHP es bastante hábil en el almacenamiento en caché de las páginas php compiladas si utiliza cosas como mod_php en apache (que no muere entre las solicitudes).

+0

memcached también usado por facebook para sujetar su almacenamiento en caché –

2

Cree un caché de página completa en el disco RAM y haga que su servidor web sirva la página desde allí. Este es un método que wordpress supercache plugin utiliza y funciona muy bien si su sitio web es adecuado para el almacenamiento en caché de página completa. Esta es la razón por la que ni siquiera estás invocando al intérprete de PHP.

Para los usuarios que han iniciado sesión (tienen una sesión abierta) puede crear una condición de reescritura que redireccionará su solicitud al motor PHP.

Además, utilice siempre un caché de código de operación como APC y úselo para almacenar en caché los archivos de configuración (Memcache también está bien).

1

Si está solicitando un servidor de aplicaciones JVM/Tomcat, entonces la respuesta es probable que no. Que yo sepa, nada (utilizable) como este existe para PHP. PHP usa una arquitectura de nada compartido, por lo tanto, por diseño, todo se configura en todas las solicitudes. Pero en realidad, esto hace que PHP escale bastante bien.

En cuanto a la aceleración de sus aplicaciones, intente utilizar memcached y code accelerator. Tal vez busque en Zend Server para obtener un paquete completo.

0

En relación con su última pregunta, creo que al menos la mayoría de los frameworks web de Python y Ruby funcionan de esa manera.

Las aplicaciones web de Ruby se construyen hoy en día para que la aplicación solo se inicie una vez por cada proceso del servidor. Cuando entran solicitudes, el servidor (Apache, por ejemplo) las pasa a la aplicación web (a través de la interfaz Rack) que se ejecuta en segundo plano.

Así es como funcionan los marcos web basados ​​en Rack. Las versiones anteriores de Ruby on Rails eran similares, aunque usaban una interfaz diferente para hablar con el servidor web.

+0

¿Existe un equivalente para PHP? –

8

Eche un vistazo en APC (Alternative PHP Cache), mantiene un caché de archivos compilados (PHP Opcode) y también le permite almacenar variables aleatorias en la memoria con apc_fetch, apc_store.

La instalación es muy simple y realmente mejora el rendimiento.

+0

+1 porque la APC es más que una caché de código de operación – gpilotino

+0

También esto va a estar integrado en php 6 –

0

Me gustaría estar atento a la página de ingeniería de Facebook (http://www.facebook.com/notes.php?id=9445547199), de vez en cuando se publican mensajes sobre cómo mantener las cosas rápido/optimizar/escala. Creo que el uso de php es súper impresionante.

Cuestiones relacionadas