需要CGI(或与IIS 7兼容的其他解决方案)来处理*大量*上传

时间:2011-03-29 21:52:55

标签: python perl iis iis-7 cgi

我们需要处理大量文件上传,而无需在IIS 7服务器上花费资源。为了强调这需要轻量化,让我们说我们需要处理完全疯狂的文件上传,例如100GB上传,或者可以在很长时间内继续运行而不消耗额外资源的东西。基本上我们需要一些东西来控制文件从开始到结束的那一刻的接收。

一些背景知识:

我们使用ColdFusion作为服务器端处理器,但在处理超过1GB的上传时我们已经失败了,我们已经用尽了配置选项。这背后有一个很长的故事,但实质上,如果.cfm页面(ColdFusion)是文件上传的目的地并且它超过大约1GB,它会产生503错误......即使目标文件不存在。因此,仅通过告诉服务器我们打算使用.cfm页面处理文件,显然太多了。

我们怀疑这是由于Java的限制,因为服务器(或者实际上,在这种情况下是工作站)没有在CPU或内存上显示任何负载迹象。由于我们的内存有限,而且这个网站用于大量的并发上传,我们不能仅仅相信提高虚拟机内存使用量,特别是因为它现在根本不起作用,即使是单个连接...更不用说了我们上线时期望的数百个并发连接。

所以我们要编写一个专门的解决方案,使用CGI来处理文件上传。基本上,我们需要在服务器端控制我们在ColdFusion或ASP.NET中无法获得的控制权,因为这些技术在幕后自己做了很多事情,而没有给我们提供所需的控制。他们总是以某种方式花费太多资源,这可能是一个明显的原因;我们要做的是完全疯狂,而不是那些技术的预期功能。这就是为什么我们想要一个通过CGI的专业上传器绕过所有阻碍阻碍的ColdFusion / ASP.NET魔法,希望它能为我们提供所需的控制。

但是在我们花了无数个小时之前,我想我会问周围,看看是否有人知道这个问题的正确解决方案可能在我们的案例中可行。

这里唯一真正的限制是它必须是CGI,它必须在IIS 7上运行,因此是Windows“服务器”环境。我们很好用它用Python编写,Perl,将它命名为...只要它可以作为CGI运行,但它必须作为CGI运行...除非当然有人对如何做到这一点有更好的想法。

所以神奇的问题是;那里有CGI解决方案已经做到了这一点,还是我们坚持自己编写,希望没有其他人做过的原因已经是不可能的了?

提前致谢。

3 个答案:

答案 0 :(得分:4)

您不会从哑客户端获得可靠的多GB上传(例如浏览器和标准上传行为)。在那里,完成了,编写处理大文件的商业数字资产管理解决方案。

在这种情况下,任何程度可靠性的关键是分块 - 您需要能够对上传进行分块,将每个块作为离散文件发送,并在服务器端重新组装。

您的客户限制有哪些(如果有的话)?你可以使用java applet吗?你甚至可以有一个客户端应用程序?

基于浏览器的解决方案的一个可能起点是jupload opensource project,但还有很多其他解决方案。

答案 1 :(得分:3)

你想要WebDAV,而不是CGI。它提供了所有可以使文件传输不太糟糕的好处,比如恢复和暂停。

答案 2 :(得分:-1)

Windows TCP堆栈限制为4GB文件上传。不止于此。