csm*_*32s 6 php memory-limit laravel
我试图在我的数据库中插入~20K记录时遇到了问题.我注意到即使我在foreach循环中回显,我也没有在命令行中输出任何内容.相反,我插入~9440有关...的记录后出错
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 91 bytes) in /Users/me/Sites/Laravel/database/connection.php on line 293
这是我的代码(尝试使用Eloquent和Fluent):
<?php
class Process_Controller extends Base_Controller
{
public function action_migrate()
{
$properties = DB::table('raw_properties')->get('id');
$total = count($properties);
foreach ($properties as $x => $p) {
$r = RawProperty::find($p->id);
$count = $x + 1;
$prop_details = array(
'column' => $r->field,
// Total of 21 fields
);
DB::table('properties')->insert($prop_details);
echo "Created #$count of $total\n";
}
}
}
Run Code Online (Sandbox Code Playgroud)
Eri*_*rik 33
接受的答案是修复症状而不是问题.问题是当你执行如此大量的查询时,Laravel查询日志(在内存中)占用了你所有的RAM.请参阅此处的答案:https://stackoverflow.com/a/18776710/221745
或者,简而言之,通过以下方式关闭查询记录:
DB::disableQueryLog()
Run Code Online (Sandbox Code Playgroud)
在执行20k查询之前
此错误表明您的 PHP 脚本由于分配给脚本的内存不足而耗尽了内存限制。
您需要使用 ini_set 函数增加内存限制,例如 ini_set('memory_limit','128M');
归档时间: |
|
查看次数: |
10850 次 |
最近记录: |