php - Laravel 数据库插入错误 : Allowed Memory Size Exhausted

标签 php laravel memory-limit

我在尝试将约 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";
        }
    }
}

最佳答案

公认的答案是治标不治本。问题是当你执行如此大量的查询时,Laravel 查询日志(在内存中)正在占用你所有的 RAM。在这里查看答案:https://stackoverflow.com/a/18776710/221745

或者,简而言之,通过以下方式关闭查询日志记录:

DB::disableQueryLog()

在执行 20k 个查询之前

关于php - Laravel 数据库插入错误 : Allowed Memory Size Exhausted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443321/

相关文章:

php - Magento2 php7 内存限制

javascript - Aurelia 以 PHP 传递的参数开头

php - 使用php将图像保存到服务器

php - 带ajax调用和php功能的Wordpress投票系统无法正常工作

php - Laravel Logging - 自定义 channel 不写

PHP Laravel : Access denied for user 'homestead' @'localhost' (using password: YES)

mysql - 无法存储新行 - SQLSTATE [23000] : Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails

laravel - 处理 php (Laravel API) 和 javascript (AngularJS) 之间的日期时间

mongodb - 使用聚合时出现Mongo错误: sort exceeded memory limit

C++ 更改最大 RAM 限制