首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
dispatch_mode=2 不稳定zm_deactivate_swoole,dispatch_mode=1就正常
dispatch_mode 设置为2 运行一段时间 出现zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die(). 但设置 dispatch_mode 为1 就正常 服务器是以websocket为主,做socket通信 同时监听一个tcp服务,做一个Client与Server的通信 //基本代码 {{{ private static $config=array( 'reactor_num' => 8, //reactor thread num 'worker_num' => 8, //worker process num 'backlog' => 128, //listen backlog 'max_connection'=>50000,//最大连接 'max_request'=>1000, 'dispatch_mode' => 1, // 'task_worker_num'=>20, 'log_file' => APP_PATH.'common/cache/logs/swoole.log', ); private static $portConfig=array( 'open_eof_check' => false, ); $server= new \Swoole\WebSocket\Server(Swoole_IP,Swoole_PORT,SWOOLE_PROCESS,SWOOLE_SOCK_TCP); $server->set(self::$config); /** * Server启动在主进程的主线程回调此函数. * onStart回调中,仅允许echo、打印Log、修改进程名称 */ $server->on('Start', array($this, 'onStart')); /** * 此事件在Server结束时发生 * 强制kill进程不会回调onShutdown,如kill -9 * 需要使用kill -15来发送SIGTREM信号到主进程才能按照正常的流程终止 */ $server->on('Shutdown', array($this, 'onShutdown')); /** * 此事件在worker进程/task进程启动时发生。 * 这里创建的对象可以在进程生命周期内使用。 * 通过$worker_id参数的值来,判断worker是普通worker还是task_worker。$worker_id>= $serv->setting['worker_num'] 时表示这个进程是task_worker。 */ $server->on('WorkerStart', array($this, 'onWorkerStart')); /** * 此事件在worker进程终止时发生。 * 在此函数中可以回收worker进程申请的各类资源。 */ $server->on('WorkerStop', array($this, 'onWorkerStop')); /** * 接收到UDP数据包时回调此函数,发生在worker进程中 */ $server->on('Packet', array($this, 'onPacket')); /** * 在task_worker进程内被调用。 * worker进程可以使用swoole_server_task函数向task_worker进程投递新的任务。 */ $server->on('Task', array($this, 'onTask')); /** * 当worker进程投递的任务在task_worker中完成时,task进程会通过swoole_server->finish()方法将任务处理的结果发送给worker进程。 */ $server->on('Finish', array($this, 'onFinish')); /** * 当工作进程收到由sendMessage发送的管道消息时会触发onPipeMessage事件。worker/task进程都可能会触发onPipeMessage事件。 */ $server->on('PipeMessage', array($this, 'onPipeMessage')); /** * 当worker/task_worker进程发生异常后会在Manager进程内回调此函数。 */ // $server->on('WorkerError', array($this, 'onWorkerError')); /** * 当管理进程启动时调用它: */ $server->on('ManagerStart', array($this, 'onManagerStart')); /** * 当管理进程结束时调用它 */ $server->on('ManagerStop', array($this, 'onManagerStop')); //$server->on('HandShake',array($this,'onHandShake')); /** * socket连接 */ $server->on("Open",array($this,'onOpen')); /** * 收到socket发来的信息 */ $server->on("Message",array($this,'onMessage')); /** * socket 连接关闭 */ $server->on("Close",array($this,'onCloseSocket')); /*********新增端口监听*********/ $manage=$server->addlistener(Swoole_Manage_IP,Swoole_Manage_PORT,SWOOLE_SOCK_TCP); $manage->set(self::$portConfig); /** * 有新的连接进入时,在worker进程中回调 */ $manage->on('Connect', array($this, 'onConnect')); /** * 接收到数据时回调此函数,发生在worker进程中。 */ $manage->on('Receive', array($this, 'onReceive')); /** * TCP客户端连接关闭后,在worker进程中回调此函数。 */ $manage->on('Close', array($this, 'onClose')); /** * 启动 */ $server->start(); //后续其他回调代码 }}} 每个代码中都用 try catch 捕获异常,可以说,不是代码的问题吧
发布于6年前 · 1 次浏览 · 来自
提问
S
StartMenu
dispatch_mode 设置为2 运行一段时间 出现zm_deactivate_swoole (ERROR 9003): worker process is terminated by exit()/die(). 但设置 dispatch_mode 为1 就正常 服务器是以websocket为主,做socket通信 同时监听一个tcp服务,做一个Client与Server的通信 //基本代码 {{{ private static $config=array( 'reactor_num' => 8, //reactor thread num 'worker_num' => 8, //worker process num 'backlog' => 128, //listen backlog 'max_connection'=>50000,//最大连接 'max_request'=>1000, 'dispatch_mode' => 1, // 'task_worker_num'=>20, 'log_file' => APP_PATH.'common/cache/logs/swoole.log', ); private static $portConfig=array( 'open_eof_check' => false, ); $server= new \Swoole\WebSocket\Server(Swoole_IP,Swoole_PORT,SWOOLE_PROCESS,SWOOLE_SOCK_TCP); $server->set(self::$config); /** * Server启动在主进程的主线程回调此函数. * onStart回调中,仅允许echo、打印Log、修改进程名称 */ $server->on('Start', array($this, 'onStart')); /** * 此事件在Server结束时发生 * 强制kill进程不会回调onShutdown,如kill -9 * 需要使用kill -15来发送SIGTREM信号到主进程才能按照正常的流程终止 */ $server->on('Shutdown', array($this, 'onShutdown')); /** * 此事件在worker进程/task进程启动时发生。 * 这里创建的对象可以在进程生命周期内使用。 * 通过$worker_id参数的值来,判断worker是普通worker还是task_worker。$worker_id>= $serv->setting['worker_num'] 时表示这个进程是task_worker。 */ $server->on('WorkerStart', array($this, 'onWorkerStart')); /** * 此事件在worker进程终止时发生。 * 在此函数中可以回收worker进程申请的各类资源。 */ $server->on('WorkerStop', array($this, 'onWorkerStop')); /** * 接收到UDP数据包时回调此函数,发生在worker进程中 */ $server->on('Packet', array($this, 'onPacket')); /** * 在task_worker进程内被调用。 * worker进程可以使用swoole_server_task函数向task_worker进程投递新的任务。 */ $server->on('Task', array($this, 'onTask')); /** * 当worker进程投递的任务在task_worker中完成时,task进程会通过swoole_server->finish()方法将任务处理的结果发送给worker进程。 */ $server->on('Finish', array($this, 'onFinish')); /** * 当工作进程收到由sendMessage发送的管道消息时会触发onPipeMessage事件。worker/task进程都可能会触发onPipeMessage事件。 */ $server->on('PipeMessage', array($this, 'onPipeMessage')); /** * 当worker/task_worker进程发生异常后会在Manager进程内回调此函数。 */ // $server->on('WorkerError', array($this, 'onWorkerError')); /** * 当管理进程启动时调用它: */ $server->on('ManagerStart', array($this, 'onManagerStart')); /** * 当管理进程结束时调用它 */ $server->on('ManagerStop', array($this, 'onManagerStop')); //$server->on('HandShake',array($this,'onHandShake')); /** * socket连接 */ $server->on("Open",array($this,'onOpen')); /** * 收到socket发来的信息 */ $server->on("Message",array($this,'onMessage')); /** * socket 连接关闭 */ $server->on("Close",array($this,'onCloseSocket')); /*********新增端口监听*********/ $manage=$server->addlistener(Swoole_Manage_IP,Swoole_Manage_PORT,SWOOLE_SOCK_TCP); $manage->set(self::$portConfig); /** * 有新的连接进入时,在worker进程中回调 */ $manage->on('Connect', array($this, 'onConnect')); /** * 接收到数据时回调此函数,发生在worker进程中。 */ $manage->on('Receive', array($this, 'onReceive')); /** * TCP客户端连接关闭后,在worker进程中回调此函数。 */ $manage->on('Close', array($this, 'onClose')); /** * 启动 */ $server->start(); //后续其他回调代码 }}} 每个代码中都用 try catch 捕获异常,可以说,不是代码的问题吧
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2019-03-17
子
子明
我也遇到类似问题,不知道是为什么 ?
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。