2013-02-01 38 views
1

我進不了太多的細節,因爲這是工作的一個項目,但不管怎麼說..更好的方法來優化PHP定時任務

我在PHP編寫一個SOAP客戶端的過程很是推動所有對MySQL數據庫的響應。我的主腳本發出一個初始的肥皂請求,用於檢索大量項目(目前約爲4000個,但預計在某個時間點將增加到幾十萬)。

一旦返回4000個項目的這個列表,我使用exec(「/ usr/bin/php path/to/my/historyScript.php &」)發送每個項目的歷史請求。 Web服務API支持多達30個請求/秒。下面是我目前在做什麼一些僞代碼:

$count = 0; 

foreach($items as $item) 
{ 
    if ($count == 30) 
    { 
     sleep(1); // Sleep for one second before calling the next 30 requests 
     $count = 0; 
    } 

    exec('/usr/bin/php path/to/history/script.php &'); 
    $count++; 
} 

我遇到的問題是,我不能確定時,該過程後,我的開發服務器已經開始崩潰。由於數據預計會增長,我知道這是對我的問題很糟糕的解決方案。

可能有更好的方法,我應該考慮使用這樣的任務嗎?我只是覺得這是更多的'黑客'

+0

您可以嘗試計算處理這30個請求花費多少時間,然後再睡1次,這會讓它稍快一點。 –

回答

0

我不確定,但我覺得你的應用程序崩潰的原因,你保存大量的數據在PHP變量。看看這個,根據RAM的大小(數據大小)會導致系統崩潰。我的建議是嘗試限制每個請求的來自外部服務的傳入數據,而不是對服務的請求數量。

+0

感謝您的反饋!我現在已經優化了腳本!我在查詢完成後確保與數據庫斷開連接,並且我正在休眠2秒,而不是1.這允許API處理我的請求。 – ilikemypizza