首页 > 解决方案 > 在 PHP 中上传大图像时如何修复内存使用情况

问题描述

我正在处理上传脚本,但在上传大图像时遇到了一些问题。

我们的客户需要上传大约 20000x20000 像素的文件,是的,数千个。更糟糕的是,他的客户也需要能够做到这一点。

现在上传本身不是问题,但是图片需要在浏览器中加载,所以我们需要一个小版本。

以下代码有效,但它使用了太多 RAM

$imgString = file_get_contents($file['tmp_name']);
$image = imagecreatefromstring($imgString);
$tmp = imagecreatetruecolor($width, $height);
$color = imagecolorallocate($tmp, 255, 255, 255);
imagefill($tmp, 0, 0, $color);
imagecopyresampled($tmp, $image, 0, 0, 0, 0, $width, $height, $oldWidth, $oldHeight);

但是它需要太多的 RAM 内存,它会崩溃。我们的 VPS(目前)目前只有 4gb,其中 3.5gb 分配给 Apache 用于测试(当然不推荐用于生产)。

对于这个调整大小过程,您有什么建议而不是这样做?我的老板不太喜欢像 Uploadcare 这样我们无法托管自己的第三方选项。

标签: phpout-of-memoryimage-uploadinglarge-files

解决方案


推荐阅读