2009-01-04 81 views
0

我在共享虛擬主機上有一個PHP腳本,它可以從〜300'feeds'中選擇40個在最後半小時內沒有更新的請求,然後發出一個cURL請求,然後傳遞給用戶。XML Fetcher Cron作業:運行多久提取一次?

SELECT * FROM table WHERE latest_scan < NOW() - INTERVAL 30 MINUTE ORDER BY latest_scan ASC LIMIT 0, 40; 
// Make cURL request and process it 

我希望能夠提供更新的儘快,但不想陷入癱瘓我的服務器或我是從獲取服務器(這是隻有極少數)。

我應該多長時間運行一次cron作業,並且應該限制每次運行的提取次數?多少?

回答

1

對每個Feed實際發生更改的頻率進行「評分」將是一件好事,因此如果每次更改的平均時間爲24小時,那麼您只需每12小時抓取一次。

只需存儲#changes和#try,然後選擇需要檢查的項目......您可以每分鐘運行一次腳本,並讓其他統計數據完成!

+0

這可能會起作用,但飼料只能存儲一週左右。 – Gilean 2009-01-04 19:47:02

0

在共享主機上,您可能還會遇到腳本運行時問題。例如,如果您的腳本運行時間超過30秒,服務器可能會終止。如果您的主機屬於這種情況,您可能需要進行一些測試/日誌記錄,以瞭解每個Feed的處理需要多長時間,並在確定您應同時處理多少個Feed時考慮這些因素。

另一件事我必須做些什麼來幫助解決這個問題是之前選中「上次掃描」作爲更新我處理的每個單獨的請求,這樣一個問題料將不會繼續失敗和被拾起每個cron運行。如果需要,您可以在故障時再次更新條目,並指定故障發生原因(如果知道)。

+0

這只是一個不好的做法,即使它失敗了,如果更改更新日期,您怎麼知道它失敗? – DFectuoso 2009-01-04 19:34:31