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

OnMessage 無法收到數據

aidong_wang

版本:Gateway 最新版本

自定義協議

在 decode 方法中,對收到的數據進行解析,在 decode 方法的結尾處,返回一個數組,結果如:

某些情況下,在 decode 中已經解析了數據,并且 decode 方法也正確的執(zhí)行結束了,但 onMessage 函數并沒有收到新數據。

可能的原因有哪些?

請問在哪里可以看到錯誤信息?包括 gateway 本身錯誤信息?

7758 15 0
15個回答

walkor 打賞

一般是協議處理有問題或者客戶端發(fā)的數據不符合協議

  • 暫無評論
aidong_wang

協議是自定義的,而且已經進入了 decode 函數,我自己都解析成功了

  • 暫無評論
aidong_wang

decode 的函數的返回值有限制嗎?

  • 暫無評論
walkor 打賞

返回值任意,如果進了decode沒有數據,可能是返回的就是空數據

  • 暫無評論
aidong_wang

不是數據空,而是 decode 方法正確的執(zhí)行結束后,OnMessage 函數并沒有被執(zhí)行。OnMessage 函數第一行就是打印日志,但在某些情況下,一直未被執(zhí)行,有些情況是正常的

  • 暫無評論
aidong_wang

decode 函數使用 try catch 有關系嗎?

  • 暫無評論
walkor 打賞

再檢查下協議代碼吧。

  • 暫無評論
aidong_wang

我再檢查一下, decode 的函數的 try catch 去掉了,OnMessage 就正常收到了

  • 暫無評論
aidong_wang

為 Workerman 項目捐贈了100元,僅表心意,謝謝

  • 暫無評論
walkor 打賞

非常感謝

  • 暫無評論
aidong_wang

2017-05-24 20:41:01 pid:20362 process_timeout:

1 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Events/Select.php(231): pcntl_signal_dispatch()

2 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(1561): Workerman\Events\Select->loop()

3 /data/wwwroot/sd_watch_gateway/vendor/workerman/gateway-worker/src/BusinessWorker.php(183): Workerman\Worker->run()

4 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(959): GatewayWorker\BusinessWorker->run()

5 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(922): Workerman\Worker::forkOneWorker(Object(GatewayWorker\BusinessWorker))

6 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(430): Workerman\Worker::forkWorkers()

7 /data/wwwroot/sd_watch_gateway/start.php(38): Workerman\Worker::runAll()

8 {main}

2017-05-24 20:44:52 pid:20380 process_timeout:

1 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Events/Select.php(231): pcntl_signal_dispatch()

2 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(1561): Workerman\Events\Select->loop()

3 /data/wwwroot/sd_watch_gateway/vendor/workerman/gateway-worker/src/BusinessWorker.php(183): Workerman\Worker->run()

4 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(959): GatewayWorker\BusinessWorker->run()

5 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(922): Workerman\Worker::forkOneWorker(Object(GatewayWorker\BusinessWorker))

6 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(1075): Workerman\Worker::forkWorkers()

7 /data/wwwroot/sd_watch_gateway/vendor/workerman/workerman/Worker.php(433): Workerman\Worker::monitorWorkers()

8 /data/wwwroot/sd_watch_gateway/start.php(38): Workerman\Worker::runAll()

9 {main}

這個可能是 decode 方法正確的執(zhí)行了,但 OnMessage 方法不被調用的可能原因?

  • 暫無評論
walkor 打賞

onMessage里的業(yè)務太慢了,超時了。
比如onMessage里執(zhí)行30秒才執(zhí)行完,
那么第二個請求要等第一個onMessage執(zhí)行完畢才能執(zhí)行onMessage,所以會有onMessae沒執(zhí)行的假象

  • 暫無評論
aidong_wang

是的,剛發(fā)現是之前在 OnMessage 調用的一個函數里,有個 sleep(60)的代碼
有沒有 OnMessage 異步處理邏輯的方法?

  • 暫無評論
walkor 打賞

慢的任務可以交給其它進程去做,避免阻塞主業(yè)務
比如這個
http://doc.workerman.net/315283

  • 暫無評論
aidong_wang

非常感謝,之前通讀了一遍手冊,感覺 還是讀的不精。謝謝了

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??