处理多个并发大型上传

时间:2015-07-29 23:02:44

标签: php laravel file-upload nginx amazon-s3

我在Laravel中创建了一个API,允许用户上传包含图像的zip存档。

上传档案后,它会被发送到S3,然后被其他服务选中以进行处理。

我发现使用较大的档案,PHP会不断达到内存限制。我知道我可以提高限制,但感觉就像一个滑坡,特别是当我想象有多个用户上传大文件时。

我目前的解决方案是完全放弃我的服务器并允许客户端直接上传到S3。但这种感觉非常不安全,容易受到垃圾邮件/ DDOS的攻击。<​​/ p>

我想我真正希望的是讨论如何优雅地处理这个问题。

是否有更适合此类处理/并发的语言?我可以轻松地将上传过程产生于其他内容。

关于S3的问题是否没有根据?我知道需要签署的请求,但生成的令牌是可重用的,因此它们可以被利用。

资源在线说NGINX是一个更好的解决方案,因为它有一个上传模块可以直接将上传内容写入文件,因为apache似乎试图在内存中做很多事情(不是100%肯定这一点)。

如果我诚实的话,我还不清楚整个PHP上传过程。请求是否直接存储在内存中?即10个50mb的上传会导致对我的500mb RAM的内存限制异常

1 个答案:

答案 0 :(得分:0)

感谢大家的讨论。在查看PHP Post / Upload过程之后,它清理了一些工作原理。

更新SDK似乎消除了这些初始内存限制问题。

当然我还在研究并发问题,但我觉得这比我的语言更像是一个apache / nginx / server配置/规范优化问题。

谢谢大家!