Symfony 1.0, la guía definitiva

18.1. Optimizando el servidor

Una aplicación bien optimizada debería ejecutarse en un servidor que también estuviera muy optimizado. Para asegurar que no existe un cuello de botella en los elementos externos a Symfony, se deberían conocer las técnicas básicas para optimizar los servidores. A continuación se muestran una serie de opciones que se deben comprobar para que el rendimiento del servidor no se vea penalizado.

Si la opción magic_quotes_gpc del archivo php.ini tiene asignado un valor de on, el rendimiento de la aplicación disminuye, ya que PHP añade mecanismos de escape a todas las comillas de los parámetros de la petición y Symfony después aplica los mecanismos inversos, por lo que el único efecto de esta opción es una pérdida de rendimiento y posibles problemas en algunos sistemas. Si se tiene acceso a la configuración de PHP, se debería desactivar esta opción.

Cuanto más reciente sea la versión de PHP que se utiliza, mayor será el rendimiento. La versión PHP 5.2 es más rápida que PHP 5.1, que a su vez es mucho más rápida que PHP 5.0. De forma que es una buena idea actualizar a la última versión de PHP para obtener una gran mejora en su rendimiento.

El uso de un acelerador de PHP (como por ejemplo, APC, XCache, o eAccelerator) es casi obligatorio en un servidor de producción, ya que mejora el rendimiento de PHP en un 50% y no tiene ningún inconveniente. Para disfrutar de la auténtica velocidad de ejecución de PHP, es necesario instalar algún acelerador.

Por otra parte, se deben desactivar en el servidor de producción todas las herramientas de depuración, como las extensiones Xdebug y APD.

Nota Si te estás preguntando sobre la penalización en el rendimiento causada por el uso de la extensión mod_rewrite, su efecto es despreciable. Aunque es evidente que cargar por ejemplo una imagen mediante la reglas de reescritura de este módulo es más lento que cargar la imagen directamente, la penalización producida es muchas órdenes de magnitud inferior a la ejecución de cualquier sentencia PHP.

Algunos programadores de Symfony también utilizan syck, que es una extensión de PHP que procesa archivos de tipo YAML, en vez de utilizar el procesamiento interno de Symfony. Aunque esta extensión es mucho más rápida, la cache que utiliza Symfony reduce en gran medida el tiempo de procesamiento de los archivos YAML, por lo que en un servidor de producción, el beneficio que se obtiene es muy reducido, casi inexistente. Además, la extensión syck no es todavía lo suficientemente mandura y de hecho, puede provocar errores si se utiliza. No obstante, se puede instalar la extensión (http://whytheluckystiff.net/syck/) y Symfony la reconoce automáticamente.

Truco Cuando un solo servidor no es suficiente, se puede añadir otro servidor y hacer un balanceo de la carga entre ellos. Mientras que el directorio uploads/ sea compartido y se almacenen las sesiones en una base de datos, Symfony funciona igual de bien en una arquitectura de balanceo de carga.