6

我正在研究从一个 MySQL 数据库中选择数据并通过学说导入另一个 MySQL 数据库的迁移脚本。问题是,在创建了每一块实体之后,我的脚本速度变慢了。

前 100 篇文章导入大约需要 5 秒,接下来的 100 篇文章需要 7 秒,接下来的 10 秒等等。这确实是个大问题,因为我需要导入大约 1.500.000 篇文章。

4

1 回答 1

8

我发现 php >=5.3 有垃圾收集器清理器。因此,当我导入大量文章时,我调用gc_collect_cycles(); 清除脚本不再需要的所有实体的内存。脚本不再减速!

如果您使用的是框架,请检查它是否有自己的缓存系统。如果您使用的是学说,请关闭 SQL 记录器

/** @var $em EntityManager */
$em = $this->getContainer()->get('doctrine')->getEntityManager();
$em->getConnection()->getConfiguration()->setSQLLogger(null);

然后在导入每个块后清除学说缓存

$em->clear();
于 2014-03-19T09:41:04.247 回答