Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP内存限制25MB已用尽-文件上载/裁剪/调整大小_Php_Upload_Resize_Crop_Memory Limit - Fatal编程技术网

PHP内存限制25MB已用尽-文件上载/裁剪/调整大小

PHP内存限制25MB已用尽-文件上载/裁剪/调整大小,php,upload,resize,crop,memory-limit,Php,Upload,Resize,Crop,Memory Limit,我使用单个图像上载/裁剪/调整大小脚本来处理10MB以下的文件 在测试时,我将php_ini内存限制设置为25M,当上传一个只有1.4MB的文件时,内存就耗尽了 "Allowed memory size of 26214400 bytes exhausted (tried to allocate 10368 bytes)" 这对我来说似乎很奇怪,是不是1036825MB 我的脚本应该使用这么多内存吗 如果您使用GD调整大小,可以。我会尝试使用其他libs或控制台工具进行图像处理,它们可以提供更

我使用单个图像上载/裁剪/调整大小脚本来处理10MB以下的文件

在测试时,我将php_ini内存限制设置为25M,当上传一个只有1.4MB的文件时,内存就耗尽了

"Allowed memory size of 26214400 bytes exhausted (tried to allocate 10368 bytes)"
这对我来说似乎很奇怪,是不是10368<26214400?(反问句)


还是说我在25MB上用了10368字节?我的脚本应该使用这么多内存吗

代码:


错误消息说它试图再分配10368字节,但不可用。换句话说,您的25MB池已耗尽,脚本无法分配所需的10368字节

您可以在
php.ini
文件中增加此限制,方法是添加或更新类似以下内容的行:

memory_limit = 64M
至于“25MB是否足够”,这对我们来说是一个很难回答的问题。。。当然有一些脚本需要64MB甚至更多。如果您发现必须不断增加内存池的大小,我会开始研究是什么占用了这么多空间

这对内存池的大小有一些很好的讨论


编辑看到您的代码发布,处理图像时肯定会消耗大量内存。处理完图像资源后,可以通过调用来帮助脚本。

错误消息说它试图再分配10368字节,但不可用。换句话说,您的25MB池已耗尽,脚本无法分配所需的10368字节

您可以在
php.ini
文件中增加此限制,方法是添加或更新类似以下内容的行:

memory_limit = 64M
至于“25MB是否足够”,这对我们来说是一个很难回答的问题。。。当然有一些脚本需要64MB甚至更多。如果您发现必须不断增加内存池的大小,我会开始研究是什么占用了这么多空间

这对内存池的大小有一些很好的讨论


编辑看到您的代码发布,处理图像时肯定会消耗大量内存。您可以在使用完图像资源后通过调用来帮助脚本。

这意味着当您超出限制时,脚本试图分配10368字节,但没有成功。这并不意味着,如果将限制提高到26MB,就不会再有这个问题。该错误可能在以后某个时候发生。您可以尝试以较小的步骤增加它(例如32MB、48MB等),直到不再出现此错误。

这意味着在超出限制时,您的脚本尝试分配10368字节,但没有成功。这并不意味着,如果将限制提高到26MB,就不会再有这个问题。该错误可能在以后某个时候发生。您可以尝试以较小的步骤增加它(例如32MB、48MB等),直到不再出现此错误。

或者这是否意味着我将10368字节增加到25MB

否。您的脚本试图分配10368字节,10368+alreadyallocated>25MB

我的脚本应该使用这么多内存吗


如果您使用GD调整大小,可以。我会尝试使用其他libs或控制台工具进行图像处理,它们可以提供更高的性能。而且,如果是公共网站,您可以决定使用队列进行图像处理,而不是及时调整图像大小,或者这是否意味着我在25MB上使用了10368字节

否。您的脚本试图分配10368字节,10368+alreadyallocated>25MB

我的脚本应该使用这么多内存吗

如果您使用GD调整大小,可以。我会尝试使用其他libs或控制台工具进行图像处理,它们可以提供更高的性能。而且,您可以决定使用队列进行图像处理,而不是及时调整图像大小,如果它是公共网站

使用后释放内存:

if( $imgt )
{
    $old_image = $imgcreatefrom($updir.$img);
    $new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
    imageCopyResized($new_image,$old_image,$dest_x,
    $dest_y,0,0,$new_width,$new_height,$original_width,$original_height);
    imagedestroy($old_image);
    $imgt($new_image,$updir.$thumb_preword.$img);
    imagedestroy($new_image);
}
用于在使用后释放内存:

if( $imgt )
{
    $old_image = $imgcreatefrom($updir.$img);
    $new_image = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
    imageCopyResized($new_image,$old_image,$dest_x,
    $dest_y,0,0,$new_width,$new_height,$original_width,$original_height);
    imagedestroy($old_image);
    $imgt($new_image,$updir.$thumb_preword.$img);
    imagedestroy($new_image);
}

除了已经说过的话之外:


永远不要忘记处理压缩文件格式(如JPEG)需要比实际文件大小多得多的内存。3000 x 3000像素JPG文件的重量仅为500kb,但需要(大约)3000 x 3000 x 3(红色、绿色和蓝色各一个字节,根据模式,Alpha至少需要一个字节)=27MB。

除了已经说过的内容之外:


永远不要忘记处理压缩文件格式(如JPEG)需要比实际文件大小多得多的内存。3000 x 3000像素JPG文件的重量仅为500kb,但需要(大约)3000 x 3000 x 3(红色、绿色和蓝色各一个字节,根据模式,Alpha至少需要一个字节)=27 MB。

在尝试分配另一个10368字节时,刚刚达到内存限制。请向我们展示一些代码,以便我们可以帮助您。感谢您的输入,代码发布后很难确定最佳答案,总体而言,您的答案与我的要求完全一致。谢谢您在尝试分配另一个10368字节时刚刚达到内存限制。请向我们展示一些代码,以便我们可以帮助您。感谢您的输入,代码发布后很难确定最佳答案,总体而言,您的答案与我的要求完全一致。谢谢谢谢你,这真的让评估“可接受的”效率成为焦点。+1我打赌他通过调试器运行了他的代码,他会在
$imgcreatefrom($updir.$img)上大发雷霆(如果他没有粘贴错误消息的一部分还没有指明该行)。谢谢,这真的让评估“可接受”效率成为焦点。+1我打赌他通过调试器运行了他的代码,他会在
$imgcreatefrom($updir.$img)处爆炸(如果他没有粘贴错误消息的一部分还没有指出那一行)。好极了,这使我的内存使用量下降了一些。我应该为其他人指出这个问题,