@@ -31,19 +31,12 @@ configuration format of your choice):
3131 handler_id : session.handler.pdo
3232
3333 services :
34- pdo :
35- class : PDO
36- arguments :
37- # see below for how to use your existing DB config
38- dsn : " mysql:dbname=mydatabase"
39- user : myuser
40- password : mypassword
41- calls :
42- - [setAttribute, [3, 2]] # \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION
43-
4434 session.handler.pdo :
4535 class : Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
46- arguments : ["@pdo"]
36+ public : false
37+ arguments :
38+ - " mysql:dbname=mydatabase"
39+ - { db_username: myuser, db_password: mypassword }
4740
4841 .. code-block :: xml
4942
@@ -53,18 +46,12 @@ configuration format of your choice):
5346 </framework : config >
5447
5548 <services >
56- <service id =" pdo" class =" PDO" >
57- <argument >mysql:dbname=mydatabase</argument >
58- <argument >myuser</argument >
59- <argument >mypassword</argument >
60- <call method =" setAttribute" >
61- <argument type =" constant" >PDO::ATTR_ERRMODE</argument >
62- <argument type =" constant" >PDO::ERRMODE_EXCEPTION</argument >
63- </call >
64- </service >
65-
66- <service id =" session.handler.pdo" class =" Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler" >
67- <argument type =" service" id =" pdo" />
49+ <service id =" session.handler.pdo" class =" Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler" public =" false" >
50+ <argument >mysql:dbname=mydatabase</agruement >
51+ <argument type =" collection" >
52+ <argument key =" db_username" >myuser</argument >
53+ <argument key =" db_password" >mypassword</argument >
54+ </argument >
6855 </service >
6956 </services >
7057
@@ -82,16 +69,9 @@ configuration format of your choice):
8269 ),
8370 ));
8471
85- $pdoDefinition = new Definition('PDO', array(
86- 'mysql:dbname=mydatabase',
87- 'myuser',
88- 'mypassword',
89- ));
90- $pdoDefinition->addMethodCall('setAttribute', array(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION));
91- $container->setDefinition('pdo', $pdoDefinition);
92-
9372 $storageDefinition = new Definition('Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler', array(
94- new Reference('pdo'),
73+ 'mysql:dbname=mydatabase',
74+ array('db_username' => 'myuser', 'db_password' => 'mypassword')
9575 ));
9676 $container->setDefinition('session.handler.pdo', $storageDefinition);
9777
@@ -111,19 +91,21 @@ a second array argument to ``PdoSessionHandler``:
11191 # ...
11292 session.handler.pdo :
11393 class : Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
94+ public : false
11495 arguments :
115- - " @pdo "
116- - { ' db_table': ' sessions' }
96+ - " mysql:dbname=mydatabase "
97+ - { db_table: sessions, db_username: myuser, db_password: mypassword }
11798
11899 .. code-block :: xml
119100
120101 <!-- app/config/config.xml -->
121102 <services >
122- <service id =" session.handler.pdo"
123- class =" Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler" >
124- <argument type =" service" id =" pdo" />
103+ <service id =" session.handler.pdo" class =" Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler" public =" false" >
104+ <argument >mysql:dbname=mydatabase</agruement >
125105 <argument type =" collection" >
126106 <argument key =" db_table" >sessions</argument >
107+ <argument key =" db_username" >myuser</argument >
108+ <argument key =" db_password" >mypassword</argument >
127109 </argument >
128110 </service >
129111 </services >
@@ -135,13 +117,10 @@ a second array argument to ``PdoSessionHandler``:
135117 use Symfony\Component\DependencyInjection\Definition;
136118 // ...
137119
138- $storageDefinition = new Definition(
139- 'Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler',
140- array(
141- new Reference('pdo'),
142- array('db_table' => 'session')
143- )
144- );
120+ $storageDefinition = new Definition('Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler', array(
121+ 'mysql:dbname=mydatabase',
122+ array('db_table' => 'sessions', 'db_username' => 'myuser', 'db_password' => 'mypassword')
123+ ));
145124 $container->setDefinition('session.handler.pdo', $storageDefinition);
146125
147126 .. versionadded :: 2.6
@@ -177,27 +156,28 @@ of your project's data, you can use the connection settings from the
177156 .. code-block :: yaml
178157
179158 services :
180- pdo :
181- class : PDO
159+ session.handler.pdo :
160+ class : Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
161+ public : false
182162 arguments :
183163 - " mysql:host=%database_host%;port=%database_port%;dbname=%database_name%"
184- - " %database_user%"
185- - " %database_password%"
164+ - { db_username: %database_user%, db_password: %database_password% }
186165
187166 .. code-block :: xml
188167
189- <service id =" pdo" class =" PDO" >
190- <argument >mysql:host=%database_host%;port=%database_port%;dbname=%database_name%</argument >
191- <argument >%database_user%</argument >
192- <argument >%database_password%</argument >
168+ <service id =" session.handler.pdo" class =" Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler" public =" false" >
169+ <argument >mysql:host=%database_host%;port=%database_port%;dbname=%database_name%</agruement >
170+ <argument type =" collection" >
171+ <argument key =" db_username" >%database_user%</argument >
172+ <argument key =" db_password" >%database_password%</argument >
173+ </argument >
193174 </service >
194175
195176 .. code-block :: php
196177
197- $pdoDefinition = new Definition('PDO ', array(
178+ $storageDefinition = new Definition('Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler ', array(
198179 'mysql:host=%database_host%;port=%database_port%;dbname=%database_name%',
199- '%database_user%',
200- '%database_password%',
180+ array('db_username' => '%database_user%', 'db_password' => '%database_password%')
201181 ));
202182
203183 Example SQL Statements
@@ -236,6 +216,13 @@ following (MySQL):
236216 `sess_lifetime` MEDIUMINT NOT NULL
237217 ) COLLATE utf8_bin, ENGINE = InnoDB;
238218
219+ .. note ::
220+
221+ A ``BLOB `` column type can only store up to 64 kb. If the data stored in
222+ a user's session exceeds this, an exception may be thrown or their session
223+ will be silently reset. Consider using a ``MEDIUMBLOB `` if you need more
224+ space.
225+
239226PostgreSQL
240227~~~~~~~~~~
241228
0 commit comments