swoole 是 master 进程负责接受请求及监控(下边有多个多线程),然后 manager 进程下有多个 worker 进程和 task 进程。
文档给的办法是用 usr1 master pid,然后会重启所有的 worker 和 task 进程,然后回调 worker 的 workerstart 闭包,相关逻辑就是在这个闭包处理。但是,我的相关逻辑代码是写在 onmessage 中,然后用文档给的办法无效
$server->on('WorkerStart', function (){
//官方给的说明,在这里 require_once 业务文件
cli_set_process_title("swoole_worker");
});
$server->on('start', function () {
cli_set_process_title("swoole_master");
});
$server->on('open', function (\Swoole\WebSocket\Server $server, $request) {
// $server->push($request->fd,json_encode([
// 'code'=>200,
// 'type'=>'bind',
// 'msg'=>'success'
// ]) );
});
$server->on('message', function (\Swoole\WebSocket\Server $server, $frame) {
//我的相关业务逻辑在这里
$db=self::$db;
$redis=self::$redis;
$data=json_decode($frame->data,true);
$type=$data['type'];