0
我有一個PHP腳本,拉下了一堆RSS提要。爲了防止出版商的服務器過載,我使用PHP Sleep功能來減慢速度。PHP與冗長的循環造成不穩定的服務器錯誤
整個腳本可能會持續幾個小時。
如果我從GoDaddy上的Cron作業運行它,它將愉快地工作5 - 10分鐘,然後返回服務器錯誤。我檢查了PHP的最大執行時間是30秒,所以我不確定這是否是問題的原因。
如果我在我的Mac上運行這個作業,我的本地PHP也有30秒的默認最大執行時間,但是如果我從終端運行它,這個腳本會工作,但我不明白爲什麼。
如何循環腳本超過30秒而不會遇到不可靠性問題?
幫助讚賞。
謝謝馬特。麻煩的是GoDaddy(我瞭解大多數其他主機,不允許更改time_limit。)因爲每個RSS下載都非常快,所以您對子集的想法是很好的。但是,如何創建一個時間表來下載一個時間,比如兩個小時?我是否必須創建數百個克朗作業? – Jeremy 2012-07-07 21:13:11
@Jeremy也許你可以跟蹤數據庫中下載的內容和剩餘內容,並以固定的時間間隔運行你的腳本,然後讓腳本根據他們以前的下載時間決定下載哪些內容。只是一個想法,雖然可能看起來有點含糊:) – Sarwara 2012-07-07 21:17:06
@Jeremy,一個簡單的方法是把一個列表放在數據庫中。添加一個狀態/ PID列。在開始時,'更新作業SET pid = $ pid WHERE status IS NULL LIMIT 50'。然後選擇具有匹配PID的那些,並在完成時更新其狀態。每X分鐘運行一次。你並不是真的想要重疊的工作,儘管只要你跟蹤PID(或工作編號等),它就不會受到傷害。更強大的解決方案存在,但這是簡單而有效的。 – Matthew 2012-07-07 21:36:07