【发布时间】:2012-06-16 13:32:05
【问题描述】:
对于一个客户,我构建了一个简单的脚本来上传多个文件(图像),调整它们的大小,将它们存储在一个临时文件夹中,然后再将它们移动到它们的目的地。
调整大小是使用 PHP 的 GD 完成的,因为 Imagick 不可用。
这些图片每张大约 2/4 MB,客户一次上传大约 30 张图片。 我使用了 HTML5 的 multiple="" 属性,一切正常。
在测试中一切正常,因为我使用的是 Windows 标准壁纸图片。
我找不到问题的根源。 当上传超过 1 张图片时,脚本调试失败告诉我它确实上传了第二张图片但不会调整大小。
我检查了图像的内存使用情况,每个图像大约 105724352 字节。
我的 PHP ini 设置:
max_execution_time = 300
max_input_time = 600
memory_limit = 200M
所以你在第二张图片中看到内存达到了它的限制,使我的脚本停止。对吗?
如果是,升级内存限制有多大的明智?
提前致谢!
编辑:
现在看来 GD 函数 imagecreatefromjpeg 无法处理分辨率大于 3500px 宽的文件,我的文件大于 5000px 宽。
有人有这方面的工作吗? 在这一点上,我想知道如果客户端需要这么多内存来存储这些图像,让客户端在共享主机上是否明智。
【问题讨论】:
-
尝试为测试用例设置
ini_set('memory_limit','-1');。并说出错误是否仍然存在。 -
似乎工作,所有文件正在处理中。谢谢!但我认为我不应该批量处理文件
-
即使您只处理一个文件大小为 4MB 的图像,您也可能需要更高的 memory_limit 或无限制 (-1)。
-
你有例子吗?还是最佳实践?从来没有处理过这么大的图像,我有点不知道如何处理它。
-
您可以查看此线程stackoverflow.com/questions/5253732/…。我的公司使用图像类,就像我在第一条评论中所做的那样。
ini_set('memory_limit','-1'); /*do stuff with big images*/ ini_restore('memory_limit');.