2010-10-17 64 views
1

使用CURL拉取搜索查詢結果,然後遍歷數據庫以加載附加查詢,然後將結果存儲回數據庫。進出口運行與PHP的最大時間的麻煩,並嘗試使用這個最大時間變量設置爲更高的金額,我覺得心不是我的主機上的工作:使用CURL加載文件的PHP Cron腳本效率

ini_set('max_execution_time', 600); 
文件中

由cron運行,因此僅改變導入過程的最長時間。

的問題是,這將是更effecient存儲數據庫中的每個CURL連接的結果,然後具有拉動dataabase結果和排序到相關表格的二次函數,並運行二次函數,每10分鐘假設或者是更有效的拉動文件並一次插入排序的記錄?

回答

0

您可以隨時撥打ini_set()後立即查明您的主機是否允許您使用ini_get('max_execution_time')修改ini_set功能。

而不是將結果存儲在數據庫中,我會把它們放到一個目錄中。通過使用函數microtime(true)命名文件(這可以輕鬆獲取最近或最近寫入的文件)。然後有一個單獨的腳本,用於檢查目錄中是否有文件,如果是,則處理其中一個。讓腳本以1分鐘的時間間隔運行。

我會注意到,如果文件處理時間超過一分鐘,可能會出現競爭條件,但即使花費時間超過一分鐘,也不會發生。

+0

我沒有在我的測試服務器或啓動服務器上運行fopen或file_get_contents,所以我試圖解決它,因此使用Curl來提取文件。 – 2010-10-17 20:43:08

+0

你怎麼沒有打開?是否因爲PHP/Apache運行的用戶沒有權限? 這個想法仍然適用於兩個數據庫表。有一個用於輸入,另一個用於輸出。雖然兩步解決方案不可能比一步解決方案更有效率,但除非您在大規模進行這項工作,否則這種差異應該可以忽略不計。 – 2010-10-17 21:52:48