客戶端代碼:
服務(wù)端代碼:
控制臺:
感謝你的回答,真及時。
像你那樣寫個timer的話確實(shí)可以執(zhí)行 并且可以一直往客戶端推送數(shù)據(jù),但是我想的是就像js那種click點(diǎn)擊事件,然后一直給客戶端推送數(shù)據(jù)可以嗎?
如果你的運(yùn)算邏輯一直執(zhí)行,其它代碼就無法執(zhí)行,包括phpsocket.io接收連接也無法執(zhí)行,所以就一直pending了。解決方法就是想辦法不讓你的業(yè)務(wù)邏輯長時間卡著整個進(jìn)程的執(zhí)行
我試了一下這種方法不行,因?yàn)楝F(xiàn)在的業(yè)務(wù)是導(dǎo)入數(shù)據(jù),就是從一個數(shù)據(jù)庫里取出數(shù)據(jù)導(dǎo)入到另一個數(shù)據(jù)庫,這個只能等導(dǎo)入完成,才能客戶端和服務(wù)端連接成功不pending,有什么辦法才能讓它既正在導(dǎo)入也能客戶端連接成功給客戶端推送數(shù)據(jù)?
你可以把phpsocketio.io作為一個即時通訊的通道,只做通訊。業(yè)務(wù)邏輯交給其他架構(gòu)或者進(jìn)程去做。
例如導(dǎo)入工作通過http請求發(fā)給傳統(tǒng)http框架,http框架完成導(dǎo)入后調(diào)用phpsocket.io接口通知對應(yīng)客戶端。
例如將耗時操作放到隊(duì)列,隊(duì)列完成后通過調(diào)用phpsocket.io接口通知對應(yīng)客戶端。
例如將耗時操作交給其他進(jìn)程去做,其他進(jìn)程完成后通過調(diào)用phpsocket.io接口通知對應(yīng)客戶端。
你可以看下這個例子,同樣適用于phpsocket.io
http://wtbis.cn/doc/workerman/faq/async-task.html
是按照你發(fā)給我的那個連接做的,現(xiàn)在是拆分成了兩個,但是一個服務(wù)重啟后另一個服務(wù)就暫停了,是這樣拆分成兩個服務(wù)嗎?