Archive for the ‘pdo’ Category

Filed Under (mysql, pdo, propel, session, symfony) by pgodel on Junio-5-2008

Symfony permite utilizar distintos medios para guardar los datos de sesión. Por defecto, Symfony utiliza el sistema de archivos (con el directorio /tmp)

Para correr Symfony en un cluster de servidores web es necesario guardar la sesión en un lugar centralizado. Para esto se puede utilizar Mysql.

Es necesario crear una tabla para guardar los datos. El schema es el siguiente:

CREATE TABLE IF NOT EXISTS `session` (
`id` VARCHAR(32) NOT NULL ,
`sess_time` INT NULL ,
`data` TEXT NULL ,
PRIMARY KEY (`id`) )

Luego, hay que configurar Symfony para utilizar esta tabla. Primero, debemos crear la conexión a la base de datos para la sesión . En el archivo config/databases.yml ponemos:

session:
class: sfPDODatabase
param:
dsn: mysql:dbname=mydb;host=localhost
username: myuser
password: mypass

Recuerden reemplazar los datos de dbname, host, username, y password con sus datos de conexión.

Luego, en la configuración de la aplicación es necesario definir la clase para guardar la sesión utilizando PDO. En el archivo config/factories.yml de la aplicación debemos agregar lo siguiente:

all:
class: sfPDOSessionStorage
param:
db_table: session
database: session
session_name: session
db_id_col: id
db_time_col: sess_time
db_data_col: data

Luego de limpiar el cache con symfony cc la sesión deberia ser guardada en la tabla.

También es posible utilizar la conexión de propel existente, pero al momento de escribir este artículo tengo algun problema con este método. Luego comentaré la solución.

Links para más información: