Symfony-处理大量插入的数据

时间:2019-10-03 11:01:17

标签: php symfony doctrine-orm symfony-3.4

我一直在导出xlsx文件,并且有一部分代码将数据插入数据库。

我有5000多个条目,而且我总是超时错误。我不知道该怎么办。我的示例如下。

我的代码:

{
        $batchSize = 500;
        for ($i = 1; $i <= 10000; ++$i) {

                $user = new User();
                $user->setEmail($userData['email']);
                $user->setUsername($userData['email']);
                $user->setPassword('plainpassword');


            if (($i % $batchSize) === 0) {

            $this->em->flush();
            $this->em->clear();

            }
        }

    $this->em->flush();
    $this->em->clear();

   return $userData;

}

1 个答案:

答案 0 :(得分:0)

首先,此操作应在symfony命令中 然后,您可以这样做:

     for ($i = 1; $i <= 10000; ++$i) {
          $user = new User();
          $user->setEmail($userData['email']);
          $user->setUsername($userData['email']);
          $user->setPassword('plainpassword');
        }
    // Do the flush only in the end of everything, that will save memory
    $this->em->flush();

例如,您的命令为populate-user。然后,您可以使用exec()函数在PHP代码中调用它,并将输出设置为/dev/null

这将强制代码在后台执行,直到完成为止

证明: enter image description here

输出: enter image description here