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

启动成功

服务启动成功如图所示

结束 测试一切正常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法设计与分析 3.2 牛顿法及改进、迭代法、矩阵谱半径、雅可比迭代、高斯迭代

思考题1 改进cosx&#xff1f;优化算法 关键点在于cos计算过于麻烦&#xff0c;而每次都要求sinx的值 故直接简化为cosx的导数 -sinx 即&#xff1a; 原&#xff1a;//double daoshu(double x) { // return 18 * x - cos(x); //} 改&#xff1a;double daoshu(double x) {retu…

闲话 ASP.NET Core 数据校验(二):FluentValidation 基本用法

前言 除了使用 ASP.NET Core 内置框架来校验数据&#xff0c;事实上&#xff0c;通过很多第三方框架校验数据&#xff0c;更具优势。 比如 FluentValidation&#xff0c;FluentValidation 是第三方的数据校验框架&#xff0c;具有许多优势&#xff0c;是开发人员首选的数据校验…

仅1年!!影响因子10+飙升至30+,Springer旗下的潜力优刊,未来可期!

【SciencePub学术】今天小编给大家带来了一本医学类的高分优刊解读&#xff0c;隶属于Springer出版社&#xff0c;JCR1区&#xff0c;中科院1区TOP&#xff0c;创刊时间不长&#xff0c;但影响因子仅1年时间从10直接飙升至30&#xff0c;领域相符的学者可考虑&#xff01; Sign…

Java 面向对象—重载和重写/覆盖(面试)

重载和重写/覆盖&#xff1a; 重载&#xff08;overload&#xff09;&#xff1a; Java重载是发生在本类中的&#xff0c;允许同一个类中&#xff0c;有多个同名方法存在&#xff0c;方法名可以相同&#xff0c;方法参数的个数和类型不同&#xff0c;即要求形参列表不一致。重载…

Vue后台系统demo小计

创建项目 1.报错 Error: command failed: npm install --loglevel error --legacy-peer-deps 措施1&#xff1a;node.js文件夹属性 》高级 》选择第一个允许 Users(XXX\Users) &#xff08;对我无用&#xff09; 措施2&#xff1a;PowerShell(以管理员身份运行) 》 cd 想存…

12_Scala_package

文章目录 Scaal面向对象编程1.回顾Java2.package可以多次声明3.设置作用域&#xff0c;设置上下级4.包可以当作对象使用5.import6.Scala用_取代Java *7.导入多个包8.屏蔽类9.类起别名10.import的规则11.有些包无需导入 Scaal面向对象编程 Scala是一门完全面向对象语言&#xf…

Redisson - tryLock 函数参数分析

这里有三个参数&#xff1a; waitTime&#xff1a;等待时间leaseTime&#xff1a;超时施放时间TimeUnit&#xff1a;时间单位 等待时间 如果 ABC… 多个线程去抢夺一把锁&#xff0c;A 成功了&#xff0c;如果设置的是 -1&#xff0c;那么 BCD... 就不等待&#xff0c;直接返…

Linux服务器终端软件termius以及Xshell + WinSCP组合

1. termius 官网地址&#xff1a;https://termius.com/ Termius是一个跨平台的SSH客户端&#xff0c;它提供了一个便捷的方式来远程连接和管理服务器、虚拟机和网络设备。以下是Termius的一些特点和功能&#xff1a; 跨平台支持&#xff1a;Termius可在多个操作系统上运行&…

基于Guava的异步线程结果监听:ListenableFuture

1.ListenableFuture概述&#xff1a; ListenableFuture是对原有Future的增强&#xff0c;它可以监听异步执行的过程&#xff0c;执行完了&#xff0c;自动触发回调操作。 除此之外&#xff0c;可以分别针对成功或者失败的情况做后续处理。 2.使用场景 你想拿到异步处理的结果…

Mycat(三)读写分离双主双从

文章目录 搭建双主双从双主机配置双从机配置双从配置两个主机互相复制停止从服务复制功能重新配置主从 修改 Mycat 的集群配置实现多种主从双主双从集群角色划分增加两个数据源修改集群配置文件读写分离配置扩展&#xff08;1&#xff09;读写分离(一主一从,无备)(m是主,s是从)…

「C/C++ 01」scanf()与回车滞留问题

目录 〇、scanf()接收用户输入的流程 一、回车的缓冲区滞留问题是什么&#xff1f; 二、为什么&#xff1f; 三、四个解决方法&#xff1a; 1. 在前面的scanf()中加上\n 2. 在scanf("%c")中添加空格 3. 使用getchar()来吸收回车 4. 使用fflush()清空缓冲区 〇、scan…

【火柴题】如何移动一根火柴将2变成5

这里写目录标题 如何移动一根棍子将2变成51、变成第五个字母E2、变成罗马数字5 V3、变成手写体54、商用字体55、古尔穆基数字、藏文数字56、希伯来数字5 如何不动棍子将2变成5使用镜子使用装水的水杯小孔成像透视 如何移动一根棍子将2变成5 1、变成第五个字母E E 2、变成罗马…

力扣HOT100 - 207. 课程表

解题思路&#xff1a; class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {int[] inDegree new int[numCourses];//存每个结点的入度List<List<Integer>> res new ArrayList<>();//存结点之间依赖关系Queue<Integer>…

获客难题怎么破?揭秘那些企业高效拓客的背后秘密

在当今的商业环境中&#xff0c;客户资源的获取是企业生存和发展的关键。然而&#xff0c;传统的获客方式往往既耗时又费力&#xff0c;且效率不高。随着科技的进步和大数据的普及&#xff0c;一种新兴的获客工具——自动获客软件应运而生&#xff0c;它以其精准高效的特点&…

百度文库公测智能漫画和智能话本,有兴趣的可以申请一下

百度文库上线智能文库和智能话本功能&#xff0c;目前处于公测中&#xff0c;我刚申请&#xff0c;还在审核中。 智能漫画&#xff0c;参照官网的示例截图&#xff0c;生成的图片看起来不错&#xff0c;没试用过所以不太清楚他的操作模式是什么 智能话本&#xff0c;生成的话…

【高校科研前沿】华东师大白开旭教授博士研究生李珂为一作在RSE发表团队最新成果:基于波谱特征优化的全球大气甲烷智能反演技术

文章简介 论文名称&#xff1a;Developing unbiased estimation of atmospheric methane via machine learning and multiobjective programming based on TROPOMI and GOSAT data&#xff08;基于TROPOMI和GOSAT数据&#xff0c;通过机器学习和多目标规划实现大气甲烷的无偏估…

python学习笔记----函数(五)

一、函数介绍 在 Python 中&#xff0c;函数是一个组织好的、可重用的代码块&#xff0c;用来执行一个单一的、相关的动作。函数提供了代码的模块化和代码复用的能力。它可以接受输入参数&#xff0c;并可以返回一个结果。函数在 Python 编程中是基本的构建块之一。 二、函数…

Docker深入探索:网络与资源控制、数据管理与容器互联以及镜像生成

目录 一、 Docker网络 &#xff08;一&#xff09;Docker网络实现原理 &#xff08;二&#xff09;Docker网络模式 1. Bridge网络&#xff08;默认&#xff09; 2. Host网络 3. None网络 4. Container网络 5. 自定义网络 二、资源控制 &#xff08;一&#xff09;cgr…

电池管理协议SMBus/I2C在STM32CubeMX配置使用-读取SN8765电池组

一、前言 目前有个电源组需要通过i2c进行读取&#xff0c;获取一些电池信息&#xff0c;采用SMBus协议进行读取&#xff0c;其可以看作i2c的子集&#xff0c;可以直接通过i2c的接口进行读写。SMBus建立在被广泛采用的I2C总线之上&#xff0c;并定义了OSI&#xff08;开放系统互…

进行RLC防孤岛负载测试的步骤和规范

RLC防孤岛负载测试是用于检测并防止电力系统出现孤岛现象的测试方法&#xff0c;孤岛现象是指当电网因故障或停电而与主电网断开连接时&#xff0c;部分电力设备仍在运行&#xff0c;形成一个没有与主电网连接的独立电网。这种情况下&#xff0c;如果电力设备不能及时检测到孤岛…