1

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

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

这可以正常工作到几千行。但是,如果我对呼叫没有设置限制,我会收到 500 错误。我不明白为什么,我不知道在哪里寻找如何避免这个问题,我似乎在 apache 日志或 laravel 自己的存储中的日志中找不到任何东西。

4

1 回答 1

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。

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

于 2016-06-17T22:23:35.703 回答