我正在编写迁移脚本,该脚本从一个 MySQL 数据库中选择数据并通过原则导入到另一个 MySQL 数据库中。问题是,在创建每个实体块之后,我的脚本速度就会变慢。
导入前 100 篇文章大约需要 5 秒,接下来的 100 篇文章需要 7 秒,接下来的 10 秒,依此类推。这确实是个大问题,因为我需要导入大约 1,500,000 篇文章。
我发现 php >=5.3 有垃圾收集器清理器。因此,当我导入大量文章时,我会调用gc_collect_cycles(); http://www.php.net/manual/en/function.gc-collect-cycles.php清除脚本不再需要的所有实体的内存。脚本不再变慢!
如果您使用框架,请检查它是否有自己的缓存系统。
如果您使用的是主义,请关闭 SQL 记录器
/** @var $em EntityManager */
$em = $this->getContainer()->get('doctrine')->getEntityManager();
$em->getConnection()->getConfiguration()->setSQLLogger(null);
然后在导入每个块后清除学说缓存
$em->clear();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)