Laravel使用的内存是本机php的100倍

Laravel使用的内存是本机php的100倍,laravel,memory,nginx,fastcgi,Laravel,Memory,Nginx,Fastcgi,mintlinux上的Nginx+PHP-FasCGI 我在Laravel上测试了csv格式的表格书写。 Laravel使用的内存是本机php的100倍 拉威尔用雄辩的语言。据我所知,使用的是mysqli。 原生php清理mysqli 只需表(无关系,int和float)9000条记录,Laravel需要约65MB的时间重新运行。 原生PHP~300KB 如果对于一个foreach获取10000条记录,则服务器内存不足(默认为128MB) 即使在模型中,第一行返回的数据比第二行长5倍以上 ret

mintlinux上的Nginx+PHP-FasCGI

我在Laravel上测试了csv格式的表格书写。 Laravel使用的内存是本机php的100倍

拉威尔用雄辩的语言。据我所知,使用的是mysqli。 原生php清理mysqli

只需表(无关系,int和float)9000条记录,Laravel需要约65MB的时间重新运行。 原生PHP~300KB

如果对于一个
foreach
获取10000条记录,则服务器内存不足(默认为128MB)

即使在模型中,第一行返回的数据比第二行长5倍以上

return self::take( $take )->skip( $skip )->get(); // 9000 ~ 5-6 sec.

return DB::table('sales')->take( $take )->skip( $skip )->get(); // 9000 <1 sec.
return self::take($take)->skip($skip)->get();//9000~5-6秒。

return DB::table('sales')->take($take)->skip($skip)->get();//9000第一行(
self::take
)的运行速度将比第二行(
DB::table
)慢,因为第一行将返回模型对象的集合,而第二行将返回
stdClass
对象的数组,更复杂的模型需要更多的时间来设置和消耗更多的内存,所以这是完全有道理的。至于内存使用差异为何如此之大,请发布您正在比较的“原生php clean mysqli”脚本,因为您的
mysqli
脚本和第二个
DB::table
语句之间的内存使用差异应该非常小。此外,Laravel使用PDO,不是mysqli。您可能想查看文档中的以下部分:从表中分块结果