fast-image-size icon indicating copy to clipboard operation
fast-image-size copied to clipboard

Memory leak with PHP 8.1

Open 3rd3 opened this issue 2 years ago • 0 comments

It appears that the loaded images remain in memory even when the FastImageSize object is unset.

PHP 8.1.13
Zend Engine v4.1.13
Zend OPcache v8.1.13

Loaded extensions:

zend_extension=opcache.so
extension=pdo.so
extension=pdo_pgsql.so
extension=pgsql.so
extension=xml.so
extension=calendar.so
extension=ctype.so
extension=curl.so
extension=dom.so
extension=exif.so
extension=ffi.so
extension=fileinfo.so
extension=ftp.so
extension=gd.so
extension=gettext.so
extension=iconv.so
extension=imagick.so
extension=intl.so
extension=mbstring.so
extension=phar.so
extension=posix.so
extension=readline.so
extension=shmop.so
extension=simplexml.so
extension=sockets.so
extension=sysvmsg.so
extension=sysvsem.so
extension=sysvshm.so
extension=tokenizer.so
extension=xmlreader.so
extension=xmlwriter.so
extension=xsl.so
extension=zip.so

Code example that demonstrates the leak:

for ($i = 0; $i < ENOUGH_TO_EXCEED_RAM_LIMIT; $i++) {
  $mem = memory_get_usage();
  $FastImageSize = new \FastImageSize\FastImageSize();
  $path = "path/to/image.jpg";
  $imageSize = $FastImageSize->getImageSize($filePath);
  unset($FastImageSize);
  unset($imageSize);
  echo "leak: " . memory_get_usage() - $mem . " bytes<br>";
}

This code terminates with the following fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 790528 bytes) in /var/www/vendor/marc1706/fast-image-size/lib/FastImageSize.php on line 189

3rd3 avatar Nov 28 '22 13:11 3rd3