Closed
Description
Description
The following code takes up a lot of memory and keeps increasing in a endless loop:
#!/usr/bin/php
<?php
class Wrapper
{
public function stream_open(string $path, string $mode, int $options): bool
{
return true;
}
}
$filename = tempnam(__DIR__, '');
touch($filename);
$wrapper = new Wrapper();
$counter = 0;
while ($counter < 1_000_000) {
$counter++;
stream_wrapper_register('symfony', Wrapper::class);
fopen('symfony://' . $filename, 'r');
stream_wrapper_unregister('symfony');
}
With a small change, the problem disappears:
#!/usr/bin/php
<?php
class Wrapper
{
public function stream_open(string $path, string $mode, int $options): bool
{
return true;
}
}
$filename = tempnam(__DIR__, '');
touch($filename);
$wrapper = new Wrapper();
$counter = 0;
stream_wrapper_register('symfony', Wrapper::class);
while ($counter < 1_000_000) {
$counter++;
fopen('symfony://' . $filename, 'r');
}
stream_wrapper_unregister('symfony');
The memory leak was described in the following ticket: symfony/symfony#46256
PHP Version
PHP 8.1.5 (cli)
Operating System
Ubuntu 20.04