国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

SocketIO客戶端給服務(wù)端傳遞參數(shù)這個(gè)on一直在執(zhí)行中,客戶端再次連接服務(wù)端的時(shí)候 客戶端控制臺(tái)一直顯示pending,難道on一直在執(zhí)行的時(shí)候,客戶端不能在連接了嗎?

maxiaoteng

客戶端代碼:

服務(wù)端代碼:

控制臺(tái):

1582 6 0
6個(gè)回答

walkor 打賞

不能用sleep,sleep會(huì)讓進(jìn)程睡眠,睡眠的進(jìn)程不執(zhí)行任何代碼,就無(wú)法處理連接。
如果你想定時(shí)emit,用定時(shí)器。

$timer_id = Workerman\Timer::add(3, function() use ($sender_io, &$timer_id) {
    static $count = 0;
    if ($count++ < 3000) {
        $sender_io->emit(...);
    } else {
        // 執(zhí)行3000次后刪除自己
        Workerman\Timer::del($timer_id);
    }
});
  • 暫無(wú)評(píng)論
maxiaoteng

感謝你的回答,真及時(shí)。
像你那樣寫個(gè)timer的話確實(shí)可以執(zhí)行 并且可以一直往客戶端推送數(shù)據(jù),但是我想的是就像js那種click點(diǎn)擊事件,然后一直給客戶端推送數(shù)據(jù)可以嗎?

  • walkor 2022-02-23

    如果你的運(yùn)算邏輯一直執(zhí)行,其它代碼就無(wú)法執(zhí)行,包括phpsocket.io接收連接也無(wú)法執(zhí)行,所以就一直pending了。解決方法就是想辦法不讓你的業(yè)務(wù)邏輯長(zhǎng)時(shí)間卡著整個(gè)進(jìn)程的執(zhí)行

  • maxiaoteng 2022-02-23

    好 謝謝您了

maxiaoteng

我試了一下這種方法不行,因?yàn)楝F(xiàn)在的業(yè)務(wù)是導(dǎo)入數(shù)據(jù),就是從一個(gè)數(shù)據(jù)庫(kù)里取出數(shù)據(jù)導(dǎo)入到另一個(gè)數(shù)據(jù)庫(kù),這個(gè)只能等導(dǎo)入完成,才能客戶端和服務(wù)端連接成功不pending,有什么辦法才能讓它既正在導(dǎo)入也能客戶端連接成功給客戶端推送數(shù)據(jù)?

  • walkor 2022-02-23

    你可以把phpsocketio.io作為一個(gè)即時(shí)通訊的通道,只做通訊。業(yè)務(wù)邏輯交給其他架構(gòu)或者進(jìn)程去做。

    例如導(dǎo)入工作通過(guò)http請(qǐng)求發(fā)給傳統(tǒng)http框架,http框架完成導(dǎo)入后調(diào)用phpsocket.io接口通知對(duì)應(yīng)客戶端。
    例如將耗時(shí)操作放到隊(duì)列,隊(duì)列完成后通過(guò)調(diào)用phpsocket.io接口通知對(duì)應(yīng)客戶端。
    例如將耗時(shí)操作交給其他進(jìn)程去做,其他進(jìn)程完成后通過(guò)調(diào)用phpsocket.io接口通知對(duì)應(yīng)客戶端。

    你可以看下這個(gè)例子,同樣適用于phpsocket.io
    http://www.wtbis.cn/doc/workerman/faq/async-task.html

maxiaoteng

是按照你發(fā)給我的那個(gè)連接做的,現(xiàn)在是拆分成了兩個(gè),但是一個(gè)服務(wù)重啟后另一個(gè)服務(wù)就暫停了,是這樣拆分成兩個(gè)服務(wù)嗎?



  • walkor 2022-02-23

    可以拆成2個(gè)服務(wù)

maxiaoteng

但是一個(gè)服務(wù)重啟后,另一個(gè)服務(wù)就暫停了

  • walkor 2022-02-23

    那你就2個(gè)一起吧,好管理

maxiaoteng

在同一個(gè)類里也不能同時(shí)啟動(dòng),只能一個(gè)啟動(dòng),!

  • walkor 2022-02-23

    之前不是啟動(dòng)2個(gè)了么,就用那個(gè)方法

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??