2014-07-02 53 views
0

我在Tunein.com有一個電臺。爲了更新專輯封面和藝術家的信息,我需要發送我能想到這樣做將是建立一個PHP/JS頁面,更新&標題和&藝術家以下每秒鐘使用cron作業執行腳本的替代方法?

# Update the song now playing on a station 
    GET http://air.radiotime.com/Playing.ashx?partnerId=<id>&partnerKey=<key>&id=<stationid>&title=Bad+Romance&artist=Lady+Gaga 

的唯一途徑部分網址,並在發生變化時將其發送出去。但是我必須每秒鐘執行一次,或者至少每隔幾秒執行一次,使用cron。

這是否還有其他更有效的方法?

謝謝你的幫助。

+0

如果你必須定期檢查它,那麼CRON是最好的選擇 –

+0

你能更好地描述你從哪裏拉專輯和藝術家信息嗎?有兩種方法:1.讓一個程序監視某些事情會發生變化,然後立即採取行動(這似乎是您正在做的事情)或2.讓更改的過程也觸發更新。一般來說2會更有效率,但不一定非常重要。同樣,有關設置的更多細節對於任何建議都是必要的。 –

+0

Cron的問題在於AFAIK,最小時間間隔爲1分鐘 - 即使它可以執行1秒,也會運行,而不管前一次執行是否停止。也許你可以使用Fat Controller來守護和自動化你的腳本:http://fat-controller.sourceforge.net這裏描述了一個合適的示例用例:http://fat-controller.sourceforge.net/use-cases。 html#processing-events – SlappyTheFish

回答

1

此答案中的任何代碼都未經過測試。使用風險自負。

由於您不控制第三方API,並且API在可用時無法向您推送信息(理想情況),您唯一的選擇是以某個間隔輪詢API以查找更改並根據需要進行更新。 (請確保API提供商可以採用這種方法,因爲它可能會違反旨在防止系統濫用的使用條款。)

您需要某種以特定間隔執行的長時間運行的進程。

你提到cron調用一個PHP腳本,這是一個選項(這裏的cron是長期運行的過程)。 Cron非常穩定,並且是一個不錯的選擇。我相信雖然該cron的最小間隔爲1分鐘。我確定那裏有類似的工具,但這些工具可能需要你完全控制你的服務器。

你也可以做一個PHP腳本的長期運行過程中有這樣的事情:

while(true){ 
    doUpdates(); # Call the API, make updates, etc 
    sleep(5);  # Wait 5 seconds 
} 

如果你這樣做下去的PHP路線,某種錯誤處理將是一絕:

while(true){ 
    try{ 
     doUpdates(); 
    } catch (Exception $e) { 
     # manage the error 
    } 
    sleep(5); 
} 

個人建議

使用PHP作爲守護進程是可能的,但它沒有像PHP的典型用法那樣得到很好的測試。如果這個任務給了我,我會使用Node.js在JavaScript中編寫一個服務器/應用程序。我更喜歡Node,因爲它被設計爲一個長時間運行的進程,間隔/事件是JavaScript的關鍵部分,我會更加確信這一工作比PHP更適合執行此特定任務。

+0

雖然你對這種方法是正確的,但是php泄漏內存的地方是絕對的廢話,請原諒我的法語。這是你的個人意見,絕對不正確。一個人可以自由地使用PHP進行守護進程,問題在於PHP程序員使用PHP進行Web開發,其中生命週期是請求回覆,然後PHP自動清理垃圾,而守護程序和CLI並非如此,程序員應該清理自己的垃圾他們自己的。我不會低估你的意見,但是請不要在沒有可複製的實際證據的情況下傳播錯誤信息(尚未提供)。 –

+0

@ N.B。你的解釋正是我所得到的。我沒有證據證明PHP會或會泄漏內存。 –

+0

@ N.B。編輯。 –