【发布时间】:2010-10-07 14:43:08
【问题描述】:
今天我在我正在构建的内容管理系统中添加了一个新功能。根据您将图像上传到的位置,PHP 将调整图像大小以适合指定位置。它工作得很好,但是当我尝试上传更大的图像时,比如在 3MB 图像中,我遇到了一个致命错误:
Fatal error: Allowed memory size of 134217728 bytes exhausted
(tried to allocate 42520 bytes) in...
我认为 128MB 的内存是相当多的,考虑到我没有运行那么多......至少我不这么认为。它尝试为调整大小的过程再分配 42520 字节,但失败了。
我的问题是我应该 (A) 增加限制还是 (B) 重新评估我为什么首先使用这么多内存? 128MB 是个好数字还是太大/太小?
谢谢, 瑞恩
分辨率
我得出的结论是 128MB 对于调整图像大小确实太大了,我非常专注于查看其他选项......比如 exec() 选项,我从未仔细查看我的“样本”数据。事实证明,即使我的大图像只有 2.83MB,但它的宽度却超过了 10000 像素。那是个问题。 :)
【问题讨论】:
-
没有人需要超过 128 MB 的内存 :)
-
所以我确定了哪个函数导致脚本出现致命错误。就是这个:imagecreatefromjpeg()。我的下一个问题是,这是正确的做法吗? -瑞安
-
现在我已经将其范围缩小到这个函数,我阅读了一些关于它是如何工作的,并且我理解了这个问题。在另一个论坛中,我读到了这篇文章“......但是你可以使用 exec() 启动一个调用 ImageMagick 的新进程,然后 PHP 内存限制不会影响它。”有人对此有任何想法吗?似乎没有解决 imagecreatefromjpeg() 的方法,因为它完成了它的工作。 -瑞安
-
@Abel - :-) “640K 对于任何人来说都应该足够了。” (经常被误认为是 William H. Gates III)
-
@Mark Baker 这就是我的意思!