Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2条令将数百万条记录从一个实体管理者移动到另一个实体管理者_Php_Symfony_Doctrine Orm - Fatal编程技术网

Php Symfony2条令将数百万条记录从一个实体管理者移动到另一个实体管理者

Php Symfony2条令将数百万条记录从一个实体管理者移动到另一个实体管理者,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有一个db表,其中有很多条目(大约200万条),我想使用另一个实体管理器将这些数据从系统核心数据库移到其他数据库。应使用cron作业移动数据,在核心数据库中,应保留每日数据,并且应将超过一天的数据移动到新数据库 因此,我编写了一个程序,使用一个命令,我试图以1000个条目块的形式获取数据,保存它们并清除实体管理器,它运行良好,但在输入40-50k条目的情况下,我会出现如下异常: Allowed memory size of xyz bytes exhausted (tried to all

我有一个db表,其中有很多条目(大约200万条),我想使用另一个实体管理器将这些数据从系统核心数据库移到其他数据库。应使用cron作业移动数据,在核心数据库中,应保留每日数据,并且应将超过一天的数据移动到新数据库

因此,我编写了一个程序,使用一个命令,我试图以1000个条目块的形式获取数据,保存它们并清除实体管理器,它运行良好,但在输入40-50k条目的情况下,我会出现如下异常:

  Allowed memory size of xyz bytes exhausted (tried to allocate 72 bytes) in 

  vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php on line 65
  vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php on line 71
  vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php on line 577

有什么方法可以避免这些独白错误吗?

您是否使用
--no debug
--env=prod
选项与
php应用程序/控制台
?尝试
$em->flush()
$em->clear($entity)
在40k条目的下方,例如,20k个条目。使用一个php命令传输数百万条记录?不管你怎么做都不会发生。您的cron需要启动一个主处理器,该主处理器反过来启动一个php子进程,该进程可以传输大约10k条记录。子进程完成后,主处理器将启动一个新的子进程。即使这样也可能不可靠。php不是为大批量处理而设计的。@AdrienBrault,谢谢您使用--no debug,我可以处理多达100k个条目,但在这之后,处理完成。@ihsan我在1000个条目后执行em->flush和em->clear,然后我得到下一个条目。