2014-03-19 149 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);沖洗後 –

相關問題