Ver índice de contenidos del libro

22.1. Creando un nuevo entorno

La cache de las plantillas de Symfony se encuentra activada por defecto en el archivo de configuración settings.yml sólo para el entorno de ejecución prod y no para los entornos test y dev:

prod:
  .settings:
    cache: on

dev:
  .settings:
    cache: off

test:
  .settings:
    cache: off

Como tenemos que probar la cache antes de subir la aplicación a producción, podemos activar la cache para el entorno dev o podemos crear un nuevo entorno. Recuerda que un entorno se define mediante su nombre (una simple cadena de texto), un controlador frontal asociado y opcionalmente, varias opciones de configuración específicas.

Para poder jugar con la cache de la aplicación Jobeet vamos a crear un nuevo entorno llamado cache muy similar al entorno prod, pero con los mensajes de log y la información de depuración activadas como en el entorno dev.

Para crear el controlador frontal del entorno cache vamos a copiar el archivo web/frontend_dev.php correspondiente al controlador frontal del entorno dev al archivo web/frontend_cache.php:

// web/frontend_cache.php
if (!in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', '::1')))
{
  die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}
 
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
 
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'cache', true);
sfContext::createInstance($configuration)->dispatch();

El código anterior es todo lo que necesitas para crear el nuevo controlador frontal. A partir de este momento, ya puedes hacer uso del nuevo entorno cache. La única diferencia con el controlador frontal de desarrollo es que el segundo argumento del método getApplicationConfiguration() es cache, ya que este argumento indica el nombre del entorno.

Accede al controlador frontal de cache para probar este nuevo entorno en el navegador:

http://jobeet.localhost/frontend_cache.php/

Nota El script del controlador frontal comienza con un pequeño código que asegura que este controlador sólo se accede desde una dirección IP local. Esta medida de seguridad permite proteger el acceso al controlador frontal de los servidores de producción. En el tutorial de mañana hablaremos más en detalle sobre este asunto.

Por el momento, el entorno cache hereda todas sus opciones de la configuración por defecto. Modifica el archivo de configuración settings.yml para añadir opciones específicas para el entorno cache:

# apps/frontend/config/settings.yml
cache:
  .settings:
    error_reporting: <?php echo (E_ALL | E_STRICT)."\n" ?>
    web_debug:       on
    cache:           on
    etag:            off

La opción de configuración cache activa la cache de las plantillas Symfony, mientras que la opción web_debug activa la barra de depuración web.

Como también nos interesa guardar las sentencias SQL en los archivos de log, debemos modificar la configuración de la base de datos. Modifica el archivo databases.yml y añade la siguiente configuración al principio del archivo:

# config/databases.yml
cache:
  propel:
    class: sfPropelDatabase
    param:
      classname: DebugPDO

Para que los cambios sean efectivos, no te olvides de borrar la cache de Symfony, ya que todos los archivos de configuración se guardan en la cache:

$ php symfony cc

Si refrescas la página en tu navegador, ahora deberías ver la barra de depuración web en la esquina superior derecha de la página, tal y como aparece en el entorno dev.