diff --git a/cookbook/configuration/pdo_session_storage.rst b/cookbook/configuration/pdo_session_storage.rst index b94f5f34e3c..7abe63b1e93 100644 --- a/cookbook/configuration/pdo_session_storage.rst +++ b/cookbook/configuration/pdo_session_storage.rst @@ -31,19 +31,12 @@ configuration format of your choice): handler_id: session.handler.pdo services: - pdo: - class: PDO - arguments: - # see below for how to use your existing DB config - dsn: "mysql:dbname=mydatabase" - user: myuser - password: mypassword - calls: - - [setAttribute, [3, 2]] # \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION - session.handler.pdo: class: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler - arguments: ["@pdo"] + public: false + arguments: + - "mysql:dbname=mydatabase" + - { db_username: myuser, db_password: mypassword } .. code-block:: xml @@ -53,18 +46,12 @@ configuration format of your choice): - - mysql:dbname=mydatabase - myuser - mypassword - - PDO::ATTR_ERRMODE - PDO::ERRMODE_EXCEPTION - - - - - + + mysql:dbname=mydatabase + + myuser + mypassword + @@ -82,16 +69,9 @@ configuration format of your choice): ), )); - $pdoDefinition = new Definition('PDO', array( - 'mysql:dbname=mydatabase', - 'myuser', - 'mypassword', - )); - $pdoDefinition->addMethodCall('setAttribute', array(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION)); - $container->setDefinition('pdo', $pdoDefinition); - $storageDefinition = new Definition('Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler', array( - new Reference('pdo'), + 'mysql:dbname=mydatabase', + array('db_username' => 'myuser', 'db_password' => 'mypassword') )); $container->setDefinition('session.handler.pdo', $storageDefinition); @@ -111,19 +91,21 @@ a second array argument to ``PdoSessionHandler``: # ... session.handler.pdo: class: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler + public: false arguments: - - "@pdo" - - { 'db_table': 'sessions'} + - "mysql:dbname=mydatabase" + - { db_table: sessions, db_username: myuser, db_password: mypassword } .. code-block:: xml - - + + mysql:dbname=mydatabase sessions + myuser + mypassword @@ -135,13 +117,10 @@ a second array argument to ``PdoSessionHandler``: use Symfony\Component\DependencyInjection\Definition; // ... - $storageDefinition = new Definition( - 'Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler', - array( - new Reference('pdo'), - array('db_table' => 'session') - ) - ); + $storageDefinition = new Definition('Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler', array( + 'mysql:dbname=mydatabase', + array('db_table' => 'sessions', 'db_username' => 'myuser', 'db_password' => 'mypassword') + )); $container->setDefinition('session.handler.pdo', $storageDefinition); .. versionadded:: 2.6 @@ -177,27 +156,28 @@ of your project's data, you can use the connection settings from the .. code-block:: yaml services: - pdo: - class: PDO + session.handler.pdo: + class: Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler + public: false arguments: - "mysql:host=%database_host%;port=%database_port%;dbname=%database_name%" - - "%database_user%" - - "%database_password%" + - { db_username: %database_user%, db_password: %database_password% } .. code-block:: xml - - mysql:host=%database_host%;port=%database_port%;dbname=%database_name% - %database_user% - %database_password% + + mysql:host=%database_host%;port=%database_port%;dbname=%database_name% + + %database_user% + %database_password% + .. code-block:: php - $pdoDefinition = new Definition('PDO', array( + $storageDefinition = new Definition('Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler', array( 'mysql:host=%database_host%;port=%database_port%;dbname=%database_name%', - '%database_user%', - '%database_password%', + array('db_username' => '%database_user%', 'db_password' => '%database_password%') )); Example SQL Statements @@ -236,6 +216,13 @@ following (MySQL): `sess_lifetime` MEDIUMINT NOT NULL ) COLLATE utf8_bin, ENGINE = InnoDB; +.. note:: + + A ``BLOB`` column type can only store up to 64 kb. If the data stored in + a user's session exceeds this, an exception may be thrown or their session + will be silently reset. Consider using a ``MEDIUMBLOB`` if you need more + space. + PostgreSQL ~~~~~~~~~~