Symfony - 处理大量插入的数据

Symfony - Handle large amount of inserted data

我一直在导出 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;

}

首先,这个操作应该在 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。然后,您可以在 PHP 代码中使用 exec() 函数调用它,并将输出设置为 /dev/null

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

证明:

输出: