2010-09-07 91 views
4

我创建了一个简单的Web界面,允许各种用户上传文件。我将上传限制设置为100MB,但现在事实证明,客户端偶尔想要上传文件500MB +。通过PHP建议上传非常大的文件(例如500MB)?

我知道如何改变php配置来改变上传限制,但我想知道是否有任何严重的缺点,通过PHP上传这种大小的文件?

显然ftp会更好,但如果可能的话,我宁愿没有两种不同的上传文件的方法。

谢谢

+0

这是有点相关的这个线程:http://stackoverflow.com/questions/597159/sending-large-files-reliably-in-php – Burbas 2010-09-07 12:16:10

+0

@Burbas除了线程是关于下载,而这一个是关于上传: ) – fabrik 2010-09-07 12:20:20

+0

我的错:-)。忽视我以前的评论然后;) – Burbas 2010-09-07 12:25:25

回答

4

首先FTP永远不可取。任何事情。

我假设你是指通过HTTP传输文件。虽然不像FTP那么糟糕,但如果你能找到另一个解决问题的方法,那么这不是一个好主意。 HTTP(以及组件程序)在围绕Internet传输相对较小的文件方面进行了优化。

协议支持服务器到客户端范围请求,但不允许进行反向操作。即使两端的软件不受音量影响,在更多可能丢失连接的时间间隔内,您推送的数据也越多。但最大的问题是最后一句中的警告。

1

无论您使用哪种服务器技术(PHP或其他),在同步模式下一次扫描大文件永远不是一个好主意。

有很多插件可用于任何技术/框架,可以为您做异步上传。

除了连接超时之外,还有一个缺点是文件上传会消耗Web服务器的内存。你通常不需要这个。

+0

通过“记忆”,我希望你的意思是“磁盘空间”。 – Artefacto 2010-09-07 13:53:25

+0

我的意思是RAM。但我不确定PHP的具体情况以及它如何处理上传。 – 2010-09-07 14:15:38

1

PHP将处理尽可能多和最大的文件。但考虑到在PHP中恢复已中止的上传基本上是不可能的,因为直到上传完成后脚本才会被激活。文件越大,网络故障导致上传并浪费大量时间和带宽的可能性就越大。同样,如果没有与APC的额外工作或使用诸如uploadify之类的东西,那么没有进度报告,并且用户仍然盯着浏览器显示没有实际工作的明显迹象,除非跳动者跳过。