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

workman websocket問題

iqige

經(jīng)常出現(xiàn)一下這樣的錯誤信息,然后進(jìn)程正常退出

process_timeout:
#1 /home/project/supereye-websocket/vendor/workerman/gateway-worker/src/Lib/Gateway.php(377): GatewayWorker\Lib\Gateway::sendAndRecv('127.0.0.1:2300', Array)
#2 /home/project/supereye-websocket/Applications/Action/WeChat.php(426): GatewayWorker\Lib\Gateway::isOnline('7f00000108fc000...')
#3 /home/project/supereye-websocket/Applications/Action/WeChat.php(410): WeChat->clearInvalidClient(Array)
#4 /home/project/supereye-websocket/Applications/Chat/Events.php(144): WeChat->onClose('7f00000108fc000...')
#5 : Events::onClose('7f00000108fc000...')
#6 /home/project/supereye-websocket/vendor/workerman/gateway-worker/src/BusinessWorker.php(409): call_user_func('Events::onClose', '7f00000108fc000...')
#7 : GatewayWorker\BusinessWorker->onGatewayMessage(Object(Workerman\Connection\AsyncTcpConnection), Array)
#8 /home/project/supereye-websocket/vendor/workerman/workerman/Connection/TcpConnection.php(658): call_user_func(Array, Object(Workerman\Connection\AsyncTcpConnection), Array)
#9 /home/project/supereye-websocket/vendor/react/event-loop/src/StreamSelectLoop.php(244): Workerman\Connection\TcpConnection->baseRead(Resource id #56)
#10 /home/project/supereye-websocket/vendor/react/event-loop/src/StreamSelectLoop.php(211): React\EventLoop\StreamSelectLoop->waitForStreamActivity(NULL)
#11 /home/project/supereye-websocket/vendor/workerman/workerman/Events/React/Base.php(252): React\EventLoop\StreamSelectLoop->run()
#12 /home/project/supereye-websocket/vendor/workerman/workerman/Events/React/Base.php(135): Workerman\Events\React\Base->run()
#13 /home/project/supereye-websocket/vendor/workerman/workerman/Worker.php(2321): Workerman\Events\React\Base->loop()
#14 /home/project/supereye-websocket/vendor/workerman/gateway-worker/src/BusinessWorker.php(197): Workerman\Worker->run()
#15 /home/project/supereye-websocket/vendor/workerman/workerman/Worker.php(1452): GatewayWorker\BusinessWorker->run()
#16 /home/project/supereye-websocket/vendor/workerman/workerman/Worker.php(1282): Workerman\Worker::forkOneWorkerForLinux(Object(GatewayWorker\BusinessWorker))
#17 /home/project/supereye-websocket/vendor/workerman/workerman/Worker.php(1256): Workerman\Worker::forkWorkersForLinux()
#18 /home/project/supereye-websocket/vendor/workerman/workerman/Worker.php(507): Workerman\Worker::forkWorkers()
#19 /home/project/supereye-websocket/start.php(42): Workerman\Worker::runAll()
#20 {main}

還有,status中的進(jìn)程沒有busy,但是想要連上websocket需要隨緣

5225 1 0
1個回答

phpcreeper

這是業(yè)務(wù)處理超時導(dǎo)致的,當(dāng)沒有設(shè)置超時處理函數(shù)時或者超時處理函數(shù)返回為空時,businessworker進(jìn)程就會因此退出,從而導(dǎo)致businessworker與gateway的連接中斷, 所以從兩方面著手:
1、排查業(yè)務(wù)阻塞的原因;
2、設(shè)置處理超時回調(diào)以捕捉業(yè)務(wù)異常,避免進(jìn)程退出;?$businessworker->processTimeoutHandler(String $trace, Exception $exception)

  • iqige 2019-09-16

    根據(jù)錯誤棧的提示,不是應(yīng)該阻塞在檢查客戶端是否在線這一步嗎,我看了下sendAndRecv這個方法,已經(jīng)設(shè)置了超時。另外,有個問題,如果出現(xiàn)了busy進(jìn)程,strace -ttp pid 配合php start.php status -d ,追蹤是這樣子的:
    11:17:54.169967 rt_sigreturn({mask=[]}) = 45
    11:17:54.170040 recvfrom(6, 0x7f8dbea58018, 655350, 0, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
    11:17:55.167907 --- SIGUSR2 {si_signo=SIGUSR2, si_code=SI_USER, si_pid=18243, si_uid=0} ---
    11:17:55.168112 rt_sigreturn({mask=[]}) = 45
    11:17:55.168265 recvfrom(6, 0x7f8dbea58018, 655350, 0, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
    11:17:56.170834 --- SIGUSR2 {si_signo=SIGUSR2, si_code=SI_USER, si_pid=18243, si_uid=0} ---
    11:17:56.170961 rt_sigreturn({mask=[]}) = 45
    11:17:56.171059 recvfrom(6, 0x7f8dbea58018, 655350, 0, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
    11:17:57.171275 --- SIGUSR2 {si_signo=SIGUSR2, si_code=SI_USER, si_pid=18243, si_uid=0} ---
    11:17:57.171352 rt_sigreturn({mask=[]}) = 45
    猜測,是不是就是卡在檢查是否在線這一步?

  • phpcreeper 2019-09-16

    這里的業(yè)務(wù)處理超時是針對 Events 的四個 onXXXX回調(diào)里的整體業(yè)務(wù)存在阻塞時而言的,這和sendAndRecv() 這個tcp連接的超時完全不是一回事, 反過來,根據(jù)題示棧信息也可以看出這個方法也是在onClose 回調(diào)觸發(fā)的,不管怎樣,這也只是相當(dāng)于整體業(yè)務(wù)里的一個局部子單元業(yè)務(wù)。

  • iqige 2019-09-17

    原來如此

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