Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 拉雷维尔口若悬河地吃掉记忆_Laravel_Memory Leaks - Fatal编程技术网

Laravel 拉雷维尔口若悬河地吃掉记忆

Laravel 拉雷维尔口若悬河地吃掉记忆,laravel,memory-leaks,Laravel,Memory Leaks,为什么每次循环后都要增加我的内存? 我怎样才能释放这个结果 我需要得到所有结果,然后将它们合并为业务逻辑流程 下面是不用于显示,所以我不分页他们正常 public function getUser($startId, $endId) { $query = User::where('action', 'register') ->whereBetween('id', [$startId, $endId]) ->whereNotNull('user_

为什么每次循环后都要增加我的内存? 我怎样才能释放这个结果


我需要得到所有结果,然后将它们合并为业务逻辑流程 下面是不用于显示,所以我不分页他们正常

public function getUser($startId, $endId)
{
    $query = User::where('action', 'register')
        ->whereBetween('id', [$startId, $endId])
        ->whereNotNull('user_id');

    return $query->get(['users.*']);
}
用户表有大约20k条记录,下面的代码读取每1000条记录

$chunk = 1000;

for ($i = 1; $i <= $count; $i += $chunk) {
    $userLists = $this->getUser($i, $i + $chunk);

    echo memory_get_usage();//It increase
}
$chunk=1000;
对于($i=1;$i getUser($i,$i+$chunk);
回显内存_get _usage();//它会增加
}

我研究并提出了<代码> d::DababQueLogOrth[](),但仍然要记住内存

。如果需要处理数千个数据库记录,请考虑使用块方法。该方法每次检索结果的一小块,并将每个块放入一个闭包进行处理。


如果需要处理数千个数据库记录,请考虑使用块方法。该方法每次检索一个小的结果块,并将每个块放入一个闭包进行处理。


您不能进行分页?为什么要手动生成块?您根本不渴望加载。您可以使用许多辅助方法:例如->with()->limit()->take()->paginate()等我需要获取所有结果,然后将它们合并为流程业务逻辑您能否显示您需要对结果执行的操作,因为可能有更简单/更有效的方法来执行您正在执行的操作。您无法进行分页?为什么要手动生成块?您根本不急于加载。您可以使用许多辅助方法:如->with()->limit()->take()->paginate()我需要获取所有结果,然后将它们合并为流程业务逻辑您可以展示您需要对结果做什么,因为可能有一种更简单/更有效的方法来做您正在做的事情。
DB::table('users')
    ->where('action', 'register')
    ->whereBetween('id', [$startId, $endId])
    ->whereNotNull('user_id')
    ->chunk(100, function ($users) {
    foreach ($users as $user) {
        //
    }
});