Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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雄辩的游标方法和PHP生成器内存使用_Php_Laravel_Eloquent_Orm_Generator - Fatal编程技术网

Laravel雄辩的游标方法和PHP生成器内存使用

Laravel雄辩的游标方法和PHP生成器内存使用,php,laravel,eloquent,orm,generator,Php,Laravel,Eloquent,Orm,Generator,我知道Larevelcursor方法使用了PHP生成器特性,但我对内存使用感到非常困惑,下面是我的一些代码 函数生成器($max) { 对于($i=0;$i

我知道Larevel
cursor
方法使用了PHP生成器特性,但我对内存使用感到非常困惑,下面是我的一些代码

函数生成器($max)
{
对于($i=0;$i<$max;$i++){
收益率1美元;
}
}
路由::get('/',函数(){ 转储(内存使用率()); $g=发电机(5000000); $count=0; foreach($g作为$a){ $count+=$a; } 转储(计数); 转储(内存使用率()); 转储(“完成”); }); 正如您所看到的,它不会占用太多内存,因为它会一个接一个地生成值并相加,而不是在内存中创建整个数组

Laravel还有一个类似的特性,那就是
光标
方法。(我有25000条数据库用户记录)

路由::get('/',函数(){ 转储(内存使用率()); $users=User::cursor(); $count=0; foreach(用户为$a){ $count+=1; } 转储(计数); 转储(内存使用率()); 转储(“完成”); });
这是optput 我现在很困惑,它使用了一些内存,不像前面的例子那样使用了很少的内存,我认为它仍然在一个接一个地提取记录。 如果我使用这个
$users=User::all()它使用了更多的内存,大约是这个
$users=User::cursor()的两倍大小

希望,我已经阐明了我的观点(为什么ormone使用一些内存,而generator方法不使用任何内存),我认为这不是PHP和Laravel特有的,但是我需要一个具体的例子来说明generators和ORM。如果有人能解释这一点,我们将不胜感激。我还在等待答案,干杯