使用 PHP 图像 resize/crop 内置方法的高内存使用率

High memory usage using PHP image resize/crop build in methods

当使用 PHP 裁剪和调整图像大小时,功能如 imagecreatefromjpeg()imagecrop()imagecopyresampled() 等,您会收到内存使用率过高的通知。

如果我将这个裁剪模块实现到一个CMS中,假设有50个人同时调用裁剪功能:内存使用量会乘以50,从而使服务器内存资源过载吗?

如果是这样,什么是排队请求或防止过载的好方法?

尽管这可能不是您问题的直接答案,但根据我的经验,在另一台服务器上处理图像总是更好,因为您不希望单个用户用几张图像杀死整个网络服务器。

如果您在不同的服务器上处理您的图像并且它死了,最糟糕的事情是图像将 return 404,但网络服务器本身将保持 运行ning 正常。

无论如何,我肯定会推荐使用像 ImageMagick 这样的库。它更容易使用,我相信你可以设置它不能超过的内存限制。

到目前为止,我发现的图像处理的最佳方法是 AWS Lambda。您可以轻松编写一个无服务器 nodeJS 脚本,该脚本下载您的图像,对其进行任何修改并将其上传回您的服务器。除非你每天需要处理数千张图片,否则你几乎可以免费 运行 它可以处理多达 100 个同时调用(它基本上一次启动多达 100 个服务器)所以理论上它可以接近 100 倍比您必须排队请求更快。