2013-05-29 51 views
0

我正在嘗試構建一個網站,該網站將顯示來自另一個網站上的XML源的實時(或接近它)的數據。我知道如何使用jQuery,AJAX和PHP以定期的間隔(每隔1到3秒)從MySQL數據庫中提取數據,我遇到的問題是如何使用新的XML來更新數據庫本身數據每1或2秒。我還需要保留所有數據的歷史記錄。實時網站的自動數據庫更新

我能夠編寫一個PHP腳本來獲取XML數據並更新數據庫就好,但我不知道如何計劃此腳本每秒運行而不由任何用戶啓動。到目前爲止,我的研究已將我指向cron,但我的主機不提供它,它似乎並不適用於頻繁更新。我不知道PHP是否是最好的方法。

任何想法或指針將不勝感激,我不介意研究的具體實施,但我甚至不知道如何谷歌我的問題有效在這一點上。

+0

XML feed實際上每隔幾秒就會改變一次嗎?請求提交此數據的網頁的頻率是多少?顯示最新的數據是否真的很關鍵? –

+0

@MikeBrant:XML feed每秒都在變化,但它只是值;該文件沒有變大。這是商品價格的反饋,同樣的10種商品也一直存在,價格每秒都在變化。由於我所建的網站包含一個互動遊戲,人們可以在價格波動上「下注」(而不是真正的金錢),因此我可以每隔3或4秒刷新一次。 –

回答

0

該請求有多種解決方案。

最簡單的一種是使用外部服務如

http://www.webcron.org/online-cron

它可以每分鐘運行一次。因此,您可以獲取儘可能多的數據,並在插入數據庫時​​緩存數據。 但是,如果你不想花錢,你應該去別的東西。

另一種方式可能是創建一個PHP遞歸函數,一次開始的循環永遠不會結束。 因此,直到循環找到您的目標網站上的數據,它將繼續運行。這意味着你只需要一次啓動循環。 只要確保不要回顯任何內容,或者一旦離開頁面,循環就會停止。

此外,您可能需要欺騙一下你的PHP。

檢查也http://php.net/manual/en/function.ignore-user-abort.php

希望它有助於

0

而不是調度,使得頻繁的更新考慮存儲的最後更新時間的時間戳,如果你想要的時間間隔已經過去只更新。

如果另一個線程已在執行更新過程中,您也可以考慮使用鎖定方案以確保不會啓動新更新。