如何处理处理时间较短的大型文件

时间:2012-10-12 08:02:56

标签: php javascript html

在我的webservice上,用户可以创建表单,让他们的朋友或同事用它们创建数据。收集的数据可以作为zip文件流下载。有时用户拥有大量数据(高达2GB),服务器只是因为显而易见的原因而杀死了php进程。是不是在某种程度上可以在没有flash的情况下在客户端创建这样的文件,java(对于我的大多数用户来说,btw java无论如何都不起作用)等等。

3 个答案:

答案 0 :(得分:0)

增加脚本超时和内存使用量。

使用set_time_limit函数Docs

并使用ini_set作为memory_limit参数。

还有一个解决方案是为客户提供文件部分。即给他们下载记录数量的限制。即1-1000,1001-2000等

答案 1 :(得分:0)

如果您可以控制Web服务器进程,我建议您探索x-send-file作为解决方案。

See this SO question

本质上,它将结束php进程并通过http服务器发送文件。这样,时间限制不是问题,并且您没有闲置的PHP实例。

答案 2 :(得分:0)

创建一个工作程序shell,它在循环中继续在后台运行并检查新数据。如果它找到新的未处理数据,则在后台准备下载。当数据准备下载时,将其标记为“就绪”并通知用户(通过电子邮件,通过ajax轮询状态更新,无论您喜欢),他的数据已经过处理并可以下载。

您可以使用nice来限制用于该shell的CPU功率,以避免它消耗所有可用的处理能力,并且您的站点变慢。

这正是我在我的一个项目中处理音频和视频处理的方式,它运行良好。