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
~~~~~~~~~~