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
这将强制代码在后台执行,直到完成
证明:
输出:
我一直在导出 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
这将强制代码在后台执行,直到完成
证明:
输出: