文件上传和下载超时

时间:2012-09-28 09:54:12

标签: php apache haproxy

在我公司的网站上,我们允许用户通过上传excel文件来上传订单。上传此文件后,将读取详细信息,创建所有必需的订单,然后将一个coloumn,并将所需的订单ID添加到users文件并发送回它们。

我面临的问题是504网关超时。我无法诊断导致超时的原因。

我们有一个HA_PROXY负载均衡器和使用PHP的应用服务器。

我应该如何检测导致超时问题的原因?是HA_PROXY,apache还是用户浏览器?

PS:要发送给用户的返回文件存在于服务器中PHP的临时目录中,但由于连接超时不会发送回用户。

3 个答案:

答案 0 :(得分:1)

我很确定它是HA_PROXY

我们的设置也是如此:服务器仍然完成了他正在做的事情(所以它不是服务器,set_time_limit(0)将无法工作),用户只是不再得到答案服务器耗时超过(我猜)HA_PROXY允许的时间。

如果是服务器,服务器本身的执行将被缩短,您的文件将无法完全上传。

如果是浏览器,使用其他浏览器时会有所不同。

我不知道该怎么办,因为我不是那个维护我们服务器的人,我们从来没有调查它,因为它只发生在cron脚本上(除非调试)无论如何都没有输出。

答案 1 :(得分:1)

如果您需要在实时发回给用户,则需要在文件头部添加此代码。

set_time_limit(0);

根据您的描述,我认为您可以使用异步处理。

上传文件后,您可以向用户回复“处理”。

然后您可以将Ajax请求写入另一个URL以检查该文件是否适合下载,每10秒一次。

stat.php?ID = FILE_ID

如果准备就绪,您可以将页面重定向到下载,例如:

down.php?ID = FILE_ID

答案 2 :(得分:0)

set_time_limit(0)

这种方式可以增加文件上传时间