我的需求是這樣的,使用workerman 來做前後端的長連結,然後mysql的一張表一旦有了新的資料,就把新的資料發送到前端,發送的資料是個數組,我該怎麼實現?如果我的描述不夠清楚,請再問,本人線上等,謝謝大神幫忙解決了.
回複內容:
我的需求是這樣的,使用workerman 來做前後端的長連結,然後mysql的一張表一旦有了新的資料,就把新的資料發送到前端,發送的資料是個數組,我該怎麼實現?如果我的描述不夠清楚,請再問,本人線上等,謝謝大神幫忙解決了.
http://www.workerman.net/web-sender
可以通過workerman的phpsocket.io推送
http://wenda.workerman.net/?/question/508
可以在Worker中開一個text連接埠推送
http://workerman.net/gatewaydoc/advanced/push.html
利用workerman的gatewayWorker推送,使用GatewayClient
什麼時候觸發以及怎麼觸發需要自己控制
我一般使用redis來解決。
在插入表的地方進行判斷,是否需要把資料發送給前端
使用觸發器吧,先建立自訂函數,函數會訪問你需要回調的程式的連接埠,然後觸發器裡面調用該函數----我說的是mysql觸發器,mysql diy函數可以直接用c來寫,方便又快捷,php裝一個多線程模組,監聽兩個連接埠,一個用於與前端websocket進行互動,一個用於接收mysql觸發器發送過來的資料,可以在資料庫中建立一個socketid表用來關聯各個線程,其實這種破事用.net會比較好寫
可以定時查下資料庫,如果有資料,就調workerman的介面發過去
我當年遇到這個需求,需要資料庫主動推送資料給代理程式更新,然並未發現啥解決方案,這個要問dba是不是有這種手段,我解決方案當時用的定時任務,輪訓的資料庫~
另外,資料的錄入過程那裡能不能給你系統個通知啥的,具體可以聊聊設計
沒接觸過workerman,代碼也寫得少,僅僅提供一種思路:
在寫入資料 的代碼那裡加一個 攔截函數,起到通知workerman的作用
這個有個局限性,就是資料庫有多個寫入口的話,這樣就很蛋疼。
盡量不要與mysql結合