@@ -174,12 +174,6 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
174
174
$ config ['default_connection ' ] = reset ($ keys );
175
175
}
176
176
177
- if (! $ container ->hasParameter ('kernel.runtime_mode ' ) && ! $ container ->hasParameter ('kernel.runtime_mode.worker ' )) {
178
- $ container ->removeDefinition ('doctrine.listeners.doctrine_connection_listener ' );
179
- } else {
180
- $ container ->getDefinition ('doctrine.orm.listeners.doctrine_connection_listener ' )->setArgument (1 , $ config ['check_connection_timing ' ]);
181
- }
182
-
183
177
$ this ->defaultConnection = $ config ['default_connection ' ];
184
178
185
179
$ container ->setAlias ('database_connection ' , sprintf ('doctrine.dbal.%s_connection ' , $ this ->defaultConnection ));
@@ -202,13 +196,8 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
202
196
$ connWithLogging = [];
203
197
$ connWithProfiling = [];
204
198
$ connWithBacktrace = [];
205
- $ timingByConnection = [];
206
- $ skipTiming = false ;
207
-
208
- if (! $ container ->hasParameter ('kernel.runtime_mode ' ) && ! $ container ->hasParameter ('kernel.runtime_mode.worker ' )) {
209
- $ container ->removeDefinition ('doctrine.listeners.doctrine_connection_listener ' );
210
- $ skipTiming = true ;
211
- }
199
+ $ timeToLiveByConnection = [];
200
+ $ connWithTimingCheck = [];
212
201
213
202
foreach ($ config ['connections ' ] as $ name => $ connection ) {
214
203
if ($ connection ['logging ' ]) {
@@ -223,15 +212,13 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
223
212
}
224
213
}
225
214
226
- if (! $ skipTiming ) {
227
- $ timingByConnection [] = [ ' name ' => $ connections [ $ name], ' timing ' => $ connection [ ' check_connection_timing ' ]] ;
215
+ if ($ connection [ ' check_connection_timing ' ] ) {
216
+ $ connWithTimingCheck [] = $ name ;
228
217
}
229
218
230
- $ this ->loadDbalConnection ($ name , $ connection , $ container );
231
- }
219
+ $ timeToLiveByConnection [$ name ] = $ connection ['check_connection_timing ' ];
232
220
233
- if (! $ skipTiming ) {
234
- $ container ->getDefinition ('doctrine.orm.listeners.doctrine_connection_listener ' )->setArgument (1 , $ timingByConnection );
221
+ $ this ->loadDbalConnection ($ name , $ connection , $ container );
235
222
}
236
223
237
224
$ container ->registerForAutoconfiguration (MiddlewareInterface::class)->addTag ('doctrine.middleware ' );
@@ -250,7 +237,8 @@ protected function dbalLoad(array $config, ContainerBuilder $container)
250
237
}
251
238
});
252
239
253
- $ this ->registerDbalMiddlewares ($ container , $ connWithLogging , $ connWithProfiling , $ connWithBacktrace );
240
+ $ this ->registerDbalMiddlewares ($ container , $ connWithLogging , $ connWithProfiling , $ connWithBacktrace , $ connWithTimingCheck );
241
+ $ container ->getDefinition ('doctrine.connection.keep.alive_middleware ' )->setArgument (1 , $ timeToLiveByConnection );
254
242
}
255
243
256
244
/**
@@ -1201,7 +1189,8 @@ private function registerDbalMiddlewares(
1201
1189
ContainerBuilder $ container ,
1202
1190
array $ connWithLogging ,
1203
1191
array $ connWithProfiling ,
1204
- array $ connWithBacktrace
1192
+ array $ connWithBacktrace ,
1193
+ array $ connWithTimingCheck
1205
1194
): void {
1206
1195
$ loader = new XmlFileLoader ($ container , new FileLocator (__DIR__ . '/../Resources/config ' ));
1207
1196
$ loader ->load ('middlewares.xml ' );
@@ -1217,5 +1206,11 @@ private function registerDbalMiddlewares(
1217
1206
$ debugMiddlewareAbstractDef
1218
1207
->addTag ('doctrine.middleware ' , ['connection ' => $ connName ]);
1219
1208
}
1209
+
1210
+ $ checkTimingMiddlewareAbstractDef = $ container ->getDefinition ('doctrine.connection.keep.alive_middleware ' );
1211
+ foreach ($ connWithTimingCheck as $ connName ) {
1212
+ $ checkTimingMiddlewareAbstractDef
1213
+ ->addTag ('doctrine.middleware ' , ['connection ' => $ connName , 'priority ' => 10 ]);
1214
+ }
1220
1215
}
1221
1216
}
0 commit comments