0

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

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

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

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

PS:要发给用户的返回文件存在于服务器PHP的temp目录下但是因为连接超时没有发回给用户。

4

3 回答 3

1

我很确定它是HA_PROXY

在我们的设置中也得到了这一点:服务器仍然完成了他正在做的事情(所以它不是服务器,并且set_time_limit(0)不会工作),用户只是不再得到答案,因为服务器花费的时间超过了(我猜测)HA_PROXY允许。

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

如果是浏览器,使用其他浏览器时会有差异。

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

于 2012-09-28T10:01:49.220 回答
1

If you need sent back to the user at Real-time , You need add this code in the head of your file .

set_time_limit(0);

And from your description , I think you can use asynchronous processing .

When the file has been uploaded , You can response "Processing" to the User .

Then you can write a Ajax Request to another url to check the file is right for download , every 10 seconds .

stat.php?id=file_id

If it ready , you can redirect the page to the download , like:

down.php?id=file_id

于 2012-09-28T10:05:10.663 回答
0
set_time_limit(0)

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

于 2012-09-28T09:59:06.593 回答