太多行导致 500 错误?

Too many rows causing 500 error?

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

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

这可以很好地处理几千行。但是如果我对调用没有设置限制,我会收到 500 错误。我不明白为什么,我也不知道我会在哪里寻找如何避免这个问题,我似乎无法在 apache 日志中找到任何东西,或者 laravel 自己的日志位于在存储中。

您可以利用 ->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。

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