php iis websocket,Yii2结合Workerman的websocket示例详解

这篇文章主要给大家介绍了关于Yii2结合Workerman的websocket的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

本文主要给大家介绍了关于Yii2结合Workerman的websocket的相关内容,两者都是好东西,我就想着能不能结合起来,这样Yii2出现瓶颈的时候有些业务就可以平滑地迁移到Workerman中。下面话不多说了,来随着小编来一起看看详细的介绍吧

步骤如下

1、安装workermancomposer require workerman/workerman

2、启动workerman

创建commands/WorkermanWebSocketController.php文件

创建actionIndex()函数,用来启动,代码如下public function actionIndex(){ if ('start' == $this->send) { try { $this->start($this->daemon); } catch (\Exception $e) { $this->stderr($e->getMessage() . "\n", Console::FG_RED); } } else if ('stop' == $this->send) { $this->stop(); } else if ('restart' == $this->send) { $this->restart(); } else if ('reload' == $this->send) { $this->reload(); } else if ('status' == $this->send) { $this->status(); } else if ('connections' == $this->send) { $this->connections(); }}

添加初始化模块public function initWorker(){ $ip = isset($this->config['ip']) ? $this->config['ip'] : $this->ip; $port = isset($this->config['port']) ? $this->config['port'] : $this->port; $wsWorker = new Worker("websocket://{$ip}:{$port}"); // 4 processes $wsWorker->count = 4; // Emitted when new connection come $wsWorker->onConnect = function ($connection) { echo "New connection\n"; }; // Emitted when data received $wsWorker->onMessage = function ($connection, $data) { // Send hello $data $connection->send('hello ' . $data); }; // Emitted when connection closed $wsWorker->onClose = function ($connection) { echo "Connection closed\n"; };}

添加启动模块/** * workman websocket start */public function start(){ $this->initWorker(); // 重置参数以匹配Worker global $argv; $argv[0] = $argv[1]; $argv[1] = 'start'; if ($this->daemon) { $argv[2] = '-d'; } // Run worker Worker::runAll();}

添加停止模块/** * workman websocket stop */public function stop(){ $this->initWorker(); // 重置参数以匹配Worker global $argv; $argv[0] = $argv[1]; $argv[1] = 'stop'; if ($this->gracefully) { $argv[2] = '-g'; } // Run worker Worker::runAll();}

添加重启模块/** * workman websocket restart */public function restart(){ $this->initWorker(); // 重置参数以匹配Worker global $argv; $argv[0] = $argv[1]; $argv[1] = 'restart'; if ($this->daemon) { $argv[2] = '-d'; } if ($this->gracefully) { $argv[2] = '-g'; } // Run worker Worker::runAll();}

添加重载模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值