Skip to content

Commit 28a9855

Browse files
Add DatabaseLoggerDisabler helper
1 parent 4a467b2 commit 28a9855

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

composer-require-checker.json

+3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,13 @@
88
"BOMO\\IcalBundle\\Model\\Event",
99
"BOMO\\IcalBundle\\Model\\Timezone",
1010
"BOMO\\IcalBundle\\Provider\\IcsProvider",
11+
"Doctrine\\Bundle\\DoctrineBundle\\Middleware\\DebugMiddleware",
1112
"Doctrine\\Common\\Collections\\Collection",
1213
"Doctrine\\Common\\Collections\\ReadableCollection",
1314
"Doctrine\\Common\\EventSubscriber",
1415
"Doctrine\\DBAL\\Connection",
16+
"Doctrine\\DBAL\\Driver\\Middleware",
17+
"Doctrine\\DBAL\\Logging\\Middleware",
1518
"Doctrine\\DBAL\\Platforms\\AbstractPlatform",
1619
"Doctrine\\DBAL\\Types\\ConversionException",
1720
"Doctrine\\DBAL\\Types\\DateImmutableType",

composer.json

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"twig/twig": "~3.7"
3434
},
3535
"require-dev": {
36+
"doctrine/doctrine-bundle": "^2.13",
3637
"doctrine/orm": "^2.7",
3738
"eluceo/ical": "^2.7",
3839
"friendsofphp/php-cs-fixer": "3.68.3",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
namespace Drenso\Shared\Database\Logger;
4+
5+
use Doctrine\Bundle\DoctrineBundle\Middleware\DebugMiddleware;
6+
use Doctrine\DBAL\Connection;
7+
use Doctrine\DBAL\Driver\Middleware;
8+
use Doctrine\DBAL\Logging\Middleware as LoggingMiddleware;
9+
10+
class DatabaseLoggerDisabler
11+
{
12+
/**
13+
* Used to disable SQL logging to prevent memory issues.
14+
* See https://jolicode.com/blog/how-to-fix-memory-leak-in-doctrine-migrations.
15+
*/
16+
public static function disableSqlLogger(Connection $connection): void
17+
{
18+
$configuration = $connection->getConfiguration();
19+
20+
// Remove logging and debug middlewares from the configuration
21+
$filteredMiddlewares = array_filter(
22+
$configuration->getMiddlewares(),
23+
static fn (
24+
Middleware $middleware,
25+
): bool => !($middleware instanceof LoggingMiddleware || $middleware instanceof DebugMiddleware),
26+
);
27+
28+
// Update the configured middleware
29+
$configuration->setMiddlewares($filteredMiddlewares);
30+
}
31+
}

0 commit comments

Comments
 (0)