提醒的話是推送給負(fù)責(zé)人的,告訴他哪些用戶的訂單超時了。不是推給用戶。之前想用輪詢做但是被boss駁回了
定時器和長連接是不沖突,可以一起用的。
我們有類似的業(yè)務(wù),用的是workerman的web-msg-sender,直接調(diào)用curl就推送過去了,賊簡單。
用crontab 運行php腳本,每分鐘跑一次數(shù)據(jù)庫,超時的直接curl調(diào)用 web-msg-sender推過去
參考思路:
首先定時器和長連接確實沒什么直接的關(guān)系,根據(jù)你描述的場景,至少有兩個關(guān)注點:
1、提醒是發(fā)給負(fù)責(zé)人的,那么也沒有維持長連接的必要,雖說負(fù)責(zé)人可能數(shù)量不多,畢竟占著長連接資源也是對資源的消耗,執(zhí)行調(diào)度時直接發(fā)給負(fù)責(zé)人即可,不過這也得看你們具體通知方式。
2、數(shù)據(jù)量比較大,定時輪詢數(shù)據(jù)庫性能肯定低下, 可以考慮使用redis的 zset 來搞, 比如score用訂單的時間來權(quán)重,時間由近及遠(yuǎn)掃描,這樣可以保證每個訂單只需掃描一次,也可以避免反復(fù)輪詢數(shù)據(jù)庫【另外還可以擴展思路,比如配合多進程,并行的處理多個切分的 zset】。