當(dāng)前遇到 woekerman 作為ws客戶端
workman重啟或重載 對方ws服務(wù)端cpu100%
用js 自帶websocket 連接 刷新網(wǎng)頁對端 cpu正常
后來抓包發(fā)現(xiàn) 重啟或重載時 沒有正確發(fā)送 斷開ws的 package opcode=0x8
onWorkerStop $worker2->connections 是空的
所以有了下面的方法
僅供參考
如你有更優(yōu)解 請告知 謝謝
$worker->onWorkerStart = function (Worker $worker) {
$events = new Events();
$con = new AsyncTcpConnection('ws://127.0.0.1:8080/socket');
$con->onConnect = array($events, 'onConnect');
$con->onMessage = array($events, 'onMessage');
$con->onClose = array($events, 'onClose');
$con->onWebSocketClose = array($events, 'onWebSocketClose');
$con->onWebSocketConnect = array($events, 'onWebSocketConnect');
//重啟 發(fā)送斷開指令 opcode 0x8
Worker::$globalEvent->add(\SIGINT, EventInterface::EV_SIGNAL, function () use ($con) {
$con->send(\pack('H*', '88800a0c5cde'), true);
});
//重載 發(fā)送斷開指令 opcode 0x8
Worker::$globalEvent->add(\SIGUSR1, EventInterface::EV_SIGNAL, function () use ($con) {
$con->send(\pack('H*', '88800a0c5cde'), true);//
});
$con->connect();
};