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 true
, 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.3 es mucho más rápida que PHP 5.2 y las versiones anteriores. 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.
Nota 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.