大型PHP上传的内存限制
我有一个应用程序。它允许您通过ajax一次上载多个文件。它适用于大文件,但一旦达到2gb以上,我就会出现如下错误:大型PHP上传的内存限制,php,apache,upload,nginx,Php,Apache,Upload,Nginx,我有一个应用程序。它允许您通过ajax一次上载多个文件。它适用于大文件,但一旦达到2gb以上,我就会出现如下错误: [Fri Feb 01 11:22:56 2013] [error] [client x.x.x.x] PHP Fatal error: Out of memory (allocated 2331770880) (tried to allocate 1165449891 bytes) in Unknown on line 0, referer: ... 在我的php.ini中,
[Fri Feb 01 11:22:56 2013] [error] [client x.x.x.x] PHP Fatal error: Out of memory (allocated 2331770880) (tried to allocate 1165449891 bytes) in Unknown on line 0, referer: ...
在我的php.ini中,我有以下配置:
post_max_size = 53687091200M
upload_max_filesize = 53687091200M
max_input_time = -1
memory_limit = -1
max_execution_time -1
max_file_uploads = 20
据我所知,这应该足以处理3GB的上传。但几乎每一次尝试,我都会犯这些错误。我已经和我的副总裁的支持人员谈过了,他们说一切看起来都很好,应该能够处理
我有一个nginx反向代理设置,这有点帮助,但还不够。我错过什么了吗
有没有办法用PHP减轻HTTP的负担?我测试了Java应用程序,它们的性能非常出色,但(不幸的是)我需要保持UI的灵活性。如果您正在上载非常大的文件,您可能希望在将其传递给PHP之前对其进行“代理”。我的经验是,长寿命的PHP线程可能会意外爆炸,PHP有时会在大内存分配方面遇到问题 看一看,它将在将文件传递到上游服务器(本例中为PHP)之前将文件缓冲到磁盘,并提供一种监控和报告进度的机制
如果您仍然有问题,您可以使用;只需将文件直接转储到磁盘上需要的位置,并通知PHP它的位置。PHP不适合上传多GB文件。您最好使用Java,然后让PHP在完成后处理它。有什么建议吗?有什么我可以用的,我不知道,“隐藏在背景中”吗?要仍能显示漂亮的UI,请执行以下操作:)在通过ajax上传文件时,您是否尝试过拆分文件?也许可以解决保持上传大小的问题实际上,HTTP不适合多GB文件上传。