使用图像处理时PHP内存泄漏问题

4

我尝试使用PHP处理一张图片,但遇到了困难。

这张图片非常大,分辨率高达36MP,总大小为23Mo。

我需要对这张图片进行一些操作,例如调整大小或将其转换为灰度图像。

问题是,当我在终端上使用htop查看内存使用情况时,我发现Apache正在使用内存(略高于140Mb),但在图像处理完成后没有释放内存。

我逐个删除了每个图像处理函数,现在只剩下这3行简单的代码,但内存泄漏仍然存在:

$image = imagecreatefromstring( file_get_contents($imageFullPath) );
imagedestroy($image);
unset($image);

有人知道为什么吗?

谢谢!

Jim


imageFullPath是什么?它的内容是什么? - jameshwart lopez
$imageFullPath 包含磁盘上图像的完整路径(例如“/tmp/image.jpg”)。请注意,我还尝试了 imagecreatefromjpeg :) - jimouest2005
1个回答

0

这是 PHP 中常见的内存问题。unset($image) 并不会从内存中删除图像,它只会删除数据的链接。可以尝试使用 empty image 来解决这个问题。

$image = NULL;

不要使用imagedestroy和unset函数,可以尝试像这样:$image = " "; @jimouest2005 - synan54
是的,我已经删除了imagedestroy以防万一。即使使用$image = " ";,泄漏仍然存在@synan54 - jimouest2005

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接