@@ -31,19 +31,12 @@ configuration format of your choice):
31
31
handler_id : session.handler.pdo
32
32
33
33
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
-
44
34
session.handler.pdo :
45
35
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 }
47
40
48
41
.. code-block :: xml
49
42
@@ -53,18 +46,12 @@ configuration format of your choice):
53
46
</framework : config >
54
47
55
48
<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 >
68
55
</service >
69
56
</services >
70
57
@@ -82,16 +69,9 @@ configuration format of your choice):
82
69
),
83
70
));
84
71
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
-
93
72
$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')
95
75
));
96
76
$container->setDefinition('session.handler.pdo', $storageDefinition);
97
77
@@ -111,19 +91,21 @@ a second array argument to ``PdoSessionHandler``:
111
91
# ...
112
92
session.handler.pdo :
113
93
class : Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
94
+ public : false
114
95
arguments :
115
- - " @pdo "
116
- - { ' db_table': ' sessions' }
96
+ - " mysql:dbname=mydatabase "
97
+ - { db_table: sessions, db_username: myuser, db_password: mypassword }
117
98
118
99
.. code-block :: xml
119
100
120
101
<!-- app/config/config.xml -->
121
102
<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 >
125
105
<argument type =" collection" >
126
106
<argument key =" db_table" >sessions</argument >
107
+ <argument key =" db_username" >myuser</argument >
108
+ <argument key =" db_password" >mypassword</argument >
127
109
</argument >
128
110
</service >
129
111
</services >
@@ -135,13 +117,10 @@ a second array argument to ``PdoSessionHandler``:
135
117
use Symfony\Component\DependencyInjection\Definition;
136
118
// ...
137
119
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
+ ));
145
124
$container->setDefinition('session.handler.pdo', $storageDefinition);
146
125
147
126
.. versionadded :: 2.6
@@ -177,27 +156,28 @@ of your project's data, you can use the connection settings from the
177
156
.. code-block :: yaml
178
157
179
158
services :
180
- pdo :
181
- class : PDO
159
+ session.handler.pdo :
160
+ class : Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
161
+ public : false
182
162
arguments :
183
163
- " 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% }
186
165
187
166
.. code-block :: xml
188
167
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 >
193
174
</service >
194
175
195
176
.. code-block :: php
196
177
197
- $pdoDefinition = new Definition('PDO ', array(
178
+ $storageDefinition = new Definition('Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler ', array(
198
179
'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%')
201
181
));
202
182
203
183
Example SQL Statements
@@ -236,6 +216,13 @@ following (MySQL):
236
216
`sess_lifetime` MEDIUMINT NOT NULL
237
217
) COLLATE utf8_bin, ENGINE = InnoDB;
238
218
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
+
239
226
PostgreSQL
240
227
~~~~~~~~~~
241
228
0 commit comments