thinkphp6 workerman无法使用框架Db/model等类库方法解决方案

本文主要是介绍thinkphp6 workerman无法使用框架Db/model等类库方法解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

thinkphp6 workerman无法使用框架Db/model相关操作解决

  1. 执行安装相关扩展
    composer require webman/gateway-worker
  2. 引入成功后编辑服务类文件,直接展示代码
<?phpnamespace app\server\controller;use GatewayWorker\BusinessWorker;
use GatewayWorker\Gateway;
use GatewayWorker\Register;
use Workerman\Worker;class SocketServe
{public function __construct(){$this->start_register();$this->start_gateway();$this->start_businessworker();// 运行所有服务Worker::runAll();}public function start_register(){// register 必须是text协议,切记不能将register端口开放给外网$register = new Register('text://127.0.0.1:1238');}public function start_gateway(){// gateway 进程,这里使用Text协议,可以用telnet测试
//        $gateway = new Gateway("tcp://0.0.0.0:8282");$gateway = new Gateway("websocket://0.0.0.0:8282");// gateway名称,status方便查看$gateway->name = 'YourAppGateway';// gateway进程数,一般设置2个就足够$gateway->count = 2;// 本机ip,分布式部署时使用内网ip$gateway->lanIp = '127.0.0.1';// 内部通讯起始端口,假如$gateway->count=2,起始端口为2900// 则一般会使用2900 2901 2个端口作为内部通讯端口$gateway->startPort = 2900;// 服务注册地址$gateway->registerAddress = '127.0.0.1:1238';// 心跳间隔$gateway->pingInterval = 20;$gateway->pingNotResponseLimit = 0;// 心跳数据$gateway->pingData = '接受心跳';}public function start_businessworker(){$worker = new BusinessWorker();// worker名称$worker->name = 'YourAppBusinessWorker';// bussinessWorker进程数量$worker->count = 4;// 服务注册地址$worker->registerAddress = '127.0.0.1:1238';//设置处理业务的类,此处制定Events的命名空间$worker->eventHandler = 'app\server\controller\Even';}}
  1. 业务处理代码(测试使用)
<?phpnamespace app\server\controller;use GatewayWorker\Lib\Gateway;class Even
{public static function onWebSocketConnect($client_id, $data){var_export($data);if (!isset($data['get']['token'])) {Gateway::closeClient($client_id);}}// 当有客户端连接时,将client_id返回,让mvc框架判断当前uid并执行绑定public static function onConnect($client_id){Gateway::sendToCurrentClient("Your client_id is $client_id");}// GatewayWorker建议不做任何业务逻辑,onMessage留空即可public static function onMessage($client_id, $message){$name = \think\facade\Db::table('user')->save(['name'=>$message]);// 群聊,转发请求给其它所有的客户端return GateWay::sendToAll($message);}
}
  1. 在根目录创建启动文件
<?php
// [ 应用入口文件 ]
namespace think;require __DIR__ . '/../vendor/autoload.php';//加载框架并初始化应用(这样才能直接使用框架自带的一些类库方法)
$http = (new App())->initialize()->make('app\server\controller\SocketServe');
  1. 启动服务
    php serve.php start

启动成功

服务启动成功如图所示

结束 测试一切正常

这篇关于thinkphp6 workerman无法使用框架Db/model等类库方法解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947859

相关文章

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.