如何解决PHP - 使用 imagecreatefromstring() 耗尽了允许的内存大小
我正在调查一些允许的内存大小耗尽错误的原因,并将问题追溯到对 PHP 的调用 imagecreatefromstring();
如果我运行以下测试脚本
echo "---File 1 (3.2MB)----<br/>";
echo memory_get_usage()."<br/>";
$img = file_get_contents(DOC_ROOT."bad.jpg");
echo memory_get_usage()."<br/>";;
$sourceImage = imagecreatefromstring( $img );
echo memory_get_usage()."<br/>";
unset($img);
imagedestroy($sourceImage);
echo "---File 2 (1.9MB)----<br/>";
echo memory_get_usage()."<br/>";
$img = file_get_contents(DOC_ROOT."good.jpg");
echo memory_get_usage()."<br/>";;
$sourceImage = imagecreatefromstring( $img );
echo memory_get_usage()."<br/>";
我看到以下内容
---File 1 (3.2MB)----
699344
3943512
156474480
---File 2 (1.9MB)----
699480
2600024
39033944
我的 PHP.ini 内存限制是 128MB。我已经通过增加调用 imagecreatefromstring() 的函数内的内存限制来解决这个问题,使用以下内容:
ini_set('memory_limit','256M');
我的问题如下:
-
从 3.2MB 的文件创建图像是否需要 100+ MB 的内存,而 1.9MB 只需要约 35MB 的内存
-
将内存限制增加到 256MB 是一个坏主意,还是有其他/更好的解决方案(替代 imagecreatefromstring() 等...)?
谢谢! 本
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。