2012-03-12 52 views
0

我有一個腳本運行線程,即它使用約50,000條目的數據庫,並分批處理它們400個。因此,該腳本運行良好的第一..但逐漸消亡..在一個估計該腳本應該運行約6個小時,但一小時後會消失。php腳本速度阻尼

代碼沒有這樣的問題,因爲它第一次工作正常,我沒有設置所有不需要的變量和其他東西來提高性能,但仍然過了一個小時左右它就消失了。

我使用4個並行連接到MySQL數據庫來實現這個目標組成有限的4個連接到數據庫。

爲什麼劇本速度在時間後受潮?

------------------------- DONE !! 用盡內存並正在創建一些std類obj,現在使用curl_multi_exec ..作品像一個魅力..! :)

回答

1

它可能會用完內存?很難說,如果沒有看到腳本,可能會將一些工作卸載到數據庫,這取決於您的查詢可能會加速某些事情 - 顯然需要更多信息。

+0

我增加了256MB的內存限制。使php的時間到了0.它只是越來越慢,逐漸變慢..從一個泵開始,然後開始放慢速度。該腳本大約有8000行..所以不能在這裏發佈.. – 2012-03-12 05:58:32

0

它只能真的是一個泄漏。

你的步驟應該是:

Create 4 handlers and give each a connection to the DB 
While you haven't processed the whole DB 
For every handler, execute: 
    Process 400 records 

現在,只要你重複使用相同的連接,而你的「過程」的步驟不創建無事後取消鏈接任何東西,它應該是能夠永遠繼續下去。

+0

創建4個處理程序,並給每個連接到數據庫 - 完成 雖然你還沒有處理整個數據庫 對於每個處理程序,執行: 過程400記錄 - 完成這就是我現在正在做的..我使用持久連接到我的MySQL數據庫,並確保持續超時超過50秒,這是綽綽有餘。我有四個並行連接。在對數據庫進行分析後,我發現在一個時間點上,只有四個線程中的一個正在處理,然後是另一個。 – 2012-03-12 05:57:23

+0

我使用捲曲多次..實際上是50,000次..可以這是一個問題.. ?? – 2012-03-12 06:35:56

+0

我們需要查看您的CURL代碼。 – DanRedux 2012-03-12 06:37:13