一种防止GD映像库耗尽内存的自动防故障方法?(PHP)

dec*_*eze 6 php memory gd

有没有办法防止PHP GD图像库耗尽内存?如果上传的图像太大,GD往往会耗尽内存,从而终止脚本.我希望它可以抛出一个可捕获的异常或其他东西,但唉它没有.

现在我正在使用一个拼凑在一起的脚本,首先发布一个ini_set('memory_limit', '128M'),如果有效,我通常都会设置.虽然可能无法实现服务器配置,但我还是试着估算所需的内存量(将分辨率,颜色深度,通道和软糖因素考虑在内),然后将其与memory_get_usage()如果函数存在,否则进行粗略估计.

到目前为止,整个过程是有效的,但它远非优雅,在某些边缘情况下会失败,我敢肯定.有没有更好的方法来做到这一点,即GD必须优雅地失败,而不是将一切都停止?

Nic*_*sta 3

多买点内存吧!:-P

但说真的,内存不足是不可能处理的,因为你采取的任何操作都需要更多的内存。

最好的办法是根据当前内存设置限制上传图像的大小。

  • 哈哈,给我买一台内存更大的主机。;-) 好吧,我至少希望 GD 能够估计它自己的内存使用情况,而不是我必须做容易出错的猜测,然后屏住呼吸。我不能只通过文件大小限制图像。具有高度压缩、高分辨率 JPG 的小文件可能比具有低分辨率 PNG 的大文件占用更多内存。这就是为什么我必须依靠上述计算。 (2认同)