2014-09-01 98 views
0

我有一个长时间运行的Laravel进程来生成报告。选择长日期范围时,大约在100秒后,我得到了重定向回到同一个URL。我将代码更改为:Laravel超时问题

set_time_limit(20); 
while(1) { 
    $var = 3 + 4/11; 
} 

它运行了20秒,然后重定向到相同的URL。我想补充说我有2条路线,一条GET路线和一条POST路线。 POST路由发生超时。

我已经试过

set_time_limit(0); 

但它并没有发挥作用。我打开了调试,但没有。任何帮助表示赞赏。

编辑:我运行PHP 5.4.x所以它不安全模式。 编辑:这里是控制器 - http://laravel.io/bin/WVdVz,这是应该执行的最后一个代码 - http://laravel.io/bin/aa2GW。 编辑:错误处理库,Whoops,捕获和记录超时错误。我的日志很干净。这与Laravel如何在我的_download函数后处理响应有关...

+0

在某些情况下,您的控制器是否故意将处理重定向回到同一页面?任何调试输入?你确定它与超时有关,而不是与内存限制有关吗?只是抛出一些随机的想法... – alou 2014-09-01 15:36:44

+0

@alou我的控制器应该生成一个XLS电子表格下载。控制器所做的最后一件事是这个功能 - http://laravel.io/bin/aa2GW。控制器以“返回”结束。我试过把内存冲到640MB。无论哪种方式,我觉得它很有趣,它会使用GET重定向到相同的URL。 – 2014-09-01 19:01:27

回答

1

经过大量调试,我找到了答案。 Apache正在超时。显然,当Apache超时时,它会抛出500个响应代码。显然(再次),当浏览器获得500错误代码到POST请求时,它将其重新发送为GET请求。我在这里更详细地写了它:http://blog.voltampmedia.com/2014/09/02/php-apache-timeouts-post-requests/

要清楚,它不是Laravel问题。请注意,Whoops库确实会捕获超时错误。