太多行导致 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);
我在数据库中有 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);