2016-12-02 78 views
0

嘿,我正在爲我的小型創業公司在網站上工作,他們需要不斷檢查數據庫中的新數據。我是機械工程師,沒有網頁設計和網絡交流經驗。目前,我每秒鐘都在使用AJAX請求來檢查MYSQL數據庫(使用PHP)。代碼比較接收到的數據(採用JSON格式),如果它與前一個不同,它會觸發一個函數來處理新數據並更新UI。Web工作者AJAX或Web套接字連續檢查MYSQL數據庫?

就在昨天晚上,我瞭解到有關網絡工作者,網絡套接字和長時間投票的情況,並且有點不知所措。我很困惑我是否需要改變我現有的解決方案,哪種解決方案最好。我想也許我應該創建一個專門處理AJAX調用的web worker,以避免犧牲UI的平滑性(網站應該在平均的平板電腦上平穩運行)。

任何有經驗的人都可以給我一些提示和指導嗎?我瞭解了Pusher API,但我現在想避免使用API​​。我覺得喜歡一切,我已經寫在過去幾個月都念叨網絡工作者和網絡插口後低效的代碼...

在此先感謝...

回答

0

你真的應該使用谷歌和搜索SO以前在類似問題上的帖子。

這裏有幾個不錯的首發:

或(外SO):

作爲一個快速總和:

我可能會選擇每一個網絡套接字連接客戶。

我會避免輪詢MySQL數據庫(爲什麼這樣做?)。真的沒有必要浪費資源。將代碼添加到update網關更容易,因此無論何時更新數據庫,都會爲所有偵聽套接字安排一個事件......如果我爲我的服務器使用多個進程/機器,我會考慮將Redis作爲Pub/Sub應用程序。

一種更簡單的工作流程是這樣的:

  1. 瀏覽器的頁面加載 - > WebSocket連接。

    Websocket連接 - >訂閱(收聽)Redis頻道。

  2. SQL更新 - >(觸發器)Redis發佈到頻道。

    Redis通道發佈 - >通知給(訂閱的)websocket。

    通道 - > web套接字消息到客戶端。

祝你好運。

0

這裏有一個簡單的推想法,可能會爲你工作:

  1. 創建時的插入/更新完成後寫入到另一個表的觸發器和記錄任何相關的數據有(給你一些有用的東西)

  2. 在應用程序的初始加載,得到最新的更新次要「l OG」表,存儲比較行/事件ID後

  3. 創建poller(服務器發送的事件)偵聽到手錶說了具體的腳本‘日誌’表

  4. 創建一個cron作業從第3步的時間每X量執行腳本

(警告:#3可能無法在IE瀏覽器,所以你需要一個備用的或不同的解決方案)