行太多会导致500错误?

时间:2016-06-17 21:43:01

标签: php mysql laravel http-status-code-500

我在数据库中有40k条目,我试图在laravel中使用简单的fetch来调用它们。

$domains = Domain::where("available", 1)->limit(1000)->get();
return view('domains')
    ->with("domains", $domains);

这可以很好地工作几千行。但如果我没有对通话设置限制,我会收到500错误。我无法理解为什么,我无法找到我想要发现如何避免这个问题的地方,我似乎无法在apache日志中找到任何内容,或者laravel自己的日志位于存储中。

1 个答案:

答案 0 :(得分:7)

您可以通过利用->chunk命令来避免此问题。

Domain::where('available', 1)->chunk(200, function($domain){
    //do whatever you would normally be doing with the rows you receive
    // $domain stuff
});

chunk命令的目的是在模型的每次X次迭代后释放内存。在这种情况下,我已经显示了200。

Sidenote - 由于chunk方法使用Closure作为第二个参数,请确保use($your_varaibles);