php - 在 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 这样我们无法托管自己的第三方选项。
解决方案
推荐阅读
- regex - 如何在每个单词的开头添加一个字符?
- php - 如何将字母和数字从 PHP 中的字符串拆分为 2 个数组
- python - 如何使用 Pandas 将单元格值复制到 Word 中的表格中?
- palantir-foundry - 在 Foundry Code Repositories 中,如何遍历目录中的所有数据集?
- sql - 在插入新行时结转列值
- java - ConcurrentHashMap 上的原子多入口操作
- flutter - setState({}) 后 Flutter 页面跳转到顶部
- wordpress - 如何将 wordpress.com 网站移动到新主机?
- ssh2 - 我无法在 Centos 7 上安装 SSH2 PHP 扩展
- html - 使用 flexbox 和 css 响应的下拉菜单