处理多个并发的大型上传
Handling Multiple Concurrent Large Uploads
我在 Laravel 中创建了一个 API,它允许用户上传包含图像的 zip 存档。
档案上传后,它会被发送到 S3,然后由另一个服务获取以进行处理。
我发现较大的存档 PHP 不断达到其内存限制。我知道我可以提高限制,但这感觉就像一个滑坡,尤其是当我想象多个用户上传大文件时。
我目前的解决方案是完全放弃我的服务器并允许客户端直接上传到 S3。但这感觉非常不安全并且容易受到 spamming/DDOSing.
的影响
我想我真正希望的是讨论如何优雅地处理这个问题。
有没有更适合这种processing/concurrency的语言?我可以轻松地将上传过程派生到其他地方。
我关于 S3 的问题是没有根据的吗?我知道任何请求都需要签名,但生成的令牌是可重复使用的,因此它们是可利用的。
在线资源谈论 NGINX 是一个更好的解决方案,因为它有一个上传模块,可以将上传直接写入文件,因为 apache 似乎试图在内存中做很多事情(对此不是 100% 确定)。
老实说,我不太清楚整个 PHP 上传过程。请求是否直接存储在内存中?即 10 个 50mb 的上传会导致我的 500mb 内存出现内存限制异常
感谢大家的讨论。在查看 PHP Post/Upload 过程后,它稍微弄清楚了事情是如何运作的。
更新 SDK 似乎消除了那些初始内存限制问题。
当然,我仍在研究并发问题,但我觉得这更像是一个 apache/nginx/server config/spec 优化问题,而不是我的语言。
谢谢大家!
我在 Laravel 中创建了一个 API,它允许用户上传包含图像的 zip 存档。
档案上传后,它会被发送到 S3,然后由另一个服务获取以进行处理。
我发现较大的存档 PHP 不断达到其内存限制。我知道我可以提高限制,但这感觉就像一个滑坡,尤其是当我想象多个用户上传大文件时。
我目前的解决方案是完全放弃我的服务器并允许客户端直接上传到 S3。但这感觉非常不安全并且容易受到 spamming/DDOSing.
的影响我想我真正希望的是讨论如何优雅地处理这个问题。
有没有更适合这种processing/concurrency的语言?我可以轻松地将上传过程派生到其他地方。
我关于 S3 的问题是没有根据的吗?我知道任何请求都需要签名,但生成的令牌是可重复使用的,因此它们是可利用的。
在线资源谈论 NGINX 是一个更好的解决方案,因为它有一个上传模块,可以将上传直接写入文件,因为 apache 似乎试图在内存中做很多事情(对此不是 100% 确定)。
老实说,我不太清楚整个 PHP 上传过程。请求是否直接存储在内存中?即 10 个 50mb 的上传会导致我的 500mb 内存出现内存限制异常
感谢大家的讨论。在查看 PHP Post/Upload 过程后,它稍微弄清楚了事情是如何运作的。
更新 SDK 似乎消除了那些初始内存限制问题。
当然,我仍在研究并发问题,但我觉得这更像是一个 apache/nginx/server config/spec 优化问题,而不是我的语言。
谢谢大家!