行太多会导致500错误?

Dav*_*d G 1 php mysql http-status-code-500 laravel

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

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

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

Ohg*_*why 7

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

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

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

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