Ver índice de contenidos del libro

17.3. Utilizando archivos de arranque

Para garantizar una óptima flexibilidad y para facilitar la reutilización de código, Symfony2 incluye una gran variedad de clases y componentes de terceros. El problema es que cargar todas estas clases desde archivos separados en cada petición puede penalizar el rendimiento.

Para reducir esta sobrecarga, la edición estándar de Symfony2 incluye un script de PHP para generar lo que se conoce como archivo de arranque o "bootstrap file". Este archivo, que es de un tamaño descomunal, contiene el código fuente de las clases más usadas en las aplicaciones Symfony. Así, al incluir este archivo de arranque, Symfony ya no tiene que incluir decenas de archivos con el código de cada una de las clases. Este truco reduce drásticamente las operaciones de entrada/salida en el disco.

Si estás utilizando la edición estándar de Symfony2, ya estás utilizando el archivo de arranque. Para asegurarte de que es así, abre el controlador frontal (por lo general web/app.php) y asegúrate de que existe la siguiente línea:

require_once __DIR__.'/../app/bootstrap.php.cache';

Cuando utilizas un archivo de arranque, existen dos desventajas:

  • El archivo se tiene que regenerar cada vez que cambia el código de alguna de las clases que incluye (es decir, cuando actualizas Symfony2 o sus vendors).
  • Al depurar la aplicación, los breakpoints los tienes que colocar en el archivo de arranque, en vez de en las clases originales.

Si estás utilizando la edición estándar de Symfony2, los archivos de arranque se reconstruyen automáticamente después de actualizar los vendors mediante el comando php bin/vendors install.

17.3.1. Archivos de arranque y caché de bytecode

Aunque utilices una caché de bytecode, el rendimiento mejorará si utilizas también un archivo de arranque, ya que habrá menos archivos en los cuales supervisar cambios. Obviamente, si has desactivado las comprobaciones de la caché (por ejemplo con la opción apc.stat = 0 en APC), no es necesario utilizar un archivo de arranque.