2014-03-19 105 views
3

我正在研究迁移脚本,它从一个MySQL数据库中选择数据并通过原则导入另一个MySQL数据库。问题是,在创建实体的每个块后,我的脚本放慢了速度。为什么PHP脚本放慢速度?

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

回答

3

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

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

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

,每块导入后,然后清除缓存主义

$em->clear(); 
+0

我只好打电话清晰的问题,因为它thows的exeption ...我对其进行排序使用$ em-> persist($ e),$ em-> flush($ e)和$ em-> clear($ e)连续调用。 – Cactux

+0

是的,这就是我的意思是“在每个块被导入后” 你也可以$ em-> detach($ e);冲洗后 –

相关问题