laravel toArray()方法内存泄露,有没有什么方法解决?
chunk()方法的代码块如下(用Eloquent调用):
$query->chunk(1000, function ($data) use (&$firstWrite, $fp) {
Log::info("开始:".memory_get_usage());
$data = $data->toArray();
Log::info("结束:".memory_get_usage());
unset($data);
Log::info("usnet 结束:".memory_get_usage());
});
日志
从下往上看
通过日志我们可以分析得出:
- 在将一个“组块”的 Eloquent 模型转为数组的时候
$data = $data->toArray();
内存增加了很多.最后unset的时候又没有释放回初始值.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这样就好了
这个不是内存泄露,unset只是把变量设置为“可回收”而已