【黄啊码】windows如何使用tp5.1配置workerman和gateway(不要看官方文档,不要抄网友文档,OK?)

news2024/11/19 18:26:07

大家好,我是黄啊码,由于项目需要被迫无奈在老项目上整合workerman,整整浪费了我一天,按着tp官方文档去做,一个又一个的坑,然后百度网友的答案,又是一个又一个的天坑,真的无力吐槽,今天我就把自己的经历写在这里,网友们,别再踩坑了。

目录

第一坑:composer

第二坑:官方代码问题

第三坑: 网友代码问题


第一坑:composer

composer require topthink/think-worker=2.0.*

这是官方文档给的,我照搬,一顿操作下来,没啥毛病,但是:由于官方对应的版本是比较老的,配置文件又是新的,导致以下位置找不到文件:

原因:官方为了避免Event和关键字Events冲突,直接将Event改成了Events,结果就是会导致Events::onMessage is not callable。

 好了,这是天坑,先给大家指出来,咱们先做直接走起:

composer require topthink/think-worker=2.0.8

记住:是2.0.8,高也不要,低也不要,不然就会出现上边的问题,那你们就自己排查吧,欲哭无泪的那种。

一下是我compoers出来的workerman版本,仅供参考:

接下来开始启动吧:

think-worker默认有命令

php think worker:gateway

急急如律令,肯定是这个:

结果:丢,这是啥玩意儿:

GatewayWorker Not Support On Windows

这并不是说gateway不能再windows上运行,而是gateway需要启动好几个命令行,windows下无法直接处理,先做咱们就开始走起来吧

先自定义命令行文件:

<?php


namespace app\command;

use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use think\facade\Config;
use think\worker\command\GatewayWorker;
use Workerman\Worker;

/**
 * GatewayWorker win环境下的启动
 *
 * Class GatewayWorkerWin
 * @package app\command
 */
class GatewayWorkerForWin extends GatewayWorker
{
    public function configure()
    {
        $this->setName('worker:gateway_win')
            ->addArgument('service', Argument::OPTIONAL, 'workerman service: gateway|register|business_worker', null)
            ->addOption('host', 'H', Option::VALUE_OPTIONAL, 'the host of workerman server.', null)
            ->addOption('port', 'p', Option::VALUE_OPTIONAL, 'the port of workerman server.', null)
            ->setDescription('GatewayWorker Server for ThinkPHP runs on Windows system');
    }

    /**
     * linux直接使用
     * php think worker:gateway
     * 由于windows下不支持下无法使用status、stop、reload、restart等命令。
     * 所以去掉status、stop、reload、restart、守护进程等命令。
     * 文档说明: https://www.workerman.net/doc/workerman/must-read.html
     * windows系统下workerman单个进程仅支持200+个连接。
     * windows系统下无法使用count参数设置多进程。
     * windows系统下无法使用status、stop、reload、restart等命令。
     * windows系统下无法守护进程,cmd窗口关掉后服务即停止。
     * windows系统下无法在一个文件中初始化多个监听。
     * linux系统无上面的限制,建议正式环境用linux系统,开发环境可以选择用windows系统。
     *
     * 命令使用:
     * php think worker:gateway_win register
     * php think worker:gateway_win business_worker
     * php think worker:gateway_win gateway
     *
     * @param Input $input
     * @param Output $output
     * @return int|void|null
     */
    public function execute(Input $input, Output $output)
    {
        $service = $input->getArgument('service');

        $option = Config::pull('gateway_worker');

        if ($input->hasOption('host')) {
            $host = $input->getOption('host');
        } else {
            $host = !empty($option['host']) ? $option['host'] : '0.0.0.0';
        }

        if ($input->hasOption('port')) {
            $port = $input->getOption('port');
        } else {
            $port = !empty($option['port']) ? $option['port'] : '2347';
        }

        $registerAddress = !empty($option['registerAddress']) ? $option['registerAddress'] : '127.0.0.1:1236';

        switch ($service) {
            case 'register':
                $this->register($registerAddress);
                break;
            case 'business_worker':
                $this->businessWorker($registerAddress, isset($option['businessWorker']) ? $option['businessWorker'] : []);
                break;
            case 'gateway':
                $this->gateway($registerAddress, $host, $port, $option);
                break;
            default:
                $output->writeln("<error>Invalid argument action:{$service}, Expected gateway|register|business_worker.</error>");
                exit(1);
                break;
        }

        Worker::runAll();
    }
}

 位置在这里,别走错路了:

 然后配置对应的命令行:改config/console.php文件,添加workerman命令

好了,到此配置结果,开动:

php think workerman register
php think workerman businessworker
php think workerman gateway

第一步:没问题:

 第二步:没问题:

第三步:。。。。丢,这是啥玩意儿:

一步一步排查,排查到这里:

原来是GatewayWorker.php的option获取的东西是空的:

第二坑:官方代码问题

原来官方的代码是Config:get('gatewayworker'),而这里是:

第三坑: 网友代码问题

到这里你应该觉得结束了,但是。。。运行还是报错,还是同样的错误,看来看去这代码没问题啊,难道是Config这个函数出错,输出了一下,果然是空的,不对,tp5的语法不是Config::get('文件名.变量名')吗?怎么这里是这样,我一度怀疑是官方文档更新了,查了文档

Config::set()   设置配置项

Config::get() 获取配置项

Config::pull() 仅仅只获取一级配置项

Config::has() 判断配置项是否存在

so》》》获取文件里边所有的配置项不是pull吗? 好了,直接改:

再次运行:php think workerman gateway

欲哭无泪啊,怎么会有如此低级的错误?来源:代码是抄网友的。。。

所以,如果你的tp框架是5.1+的,不建议你抄网文,因为天下文章一般抄,球球你们,别抄了,看我吧!!

好了,今天的分享就这里,有问题的留个言,别忘了一键三连,下次我们还会再见!

我是黄啊码,码字的码,退。。。退。。。退。。。朝! 

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

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

相关文章

基于Android 的校园疫情防控管理系统设计与实现

需求信息&#xff1a; (1〉通知公告。各级联络员可在此发布各类通知公告。 (2〉应急动态。发布国家公布的各类数据信息&#xff0c;如在本次疫情期间&#xff0c;平台集成丁香园丁香医生疫情动态模板&#xff0c;实时更新全国疫情数据&#xff0c;帮助师生了解疫情地图&#xf…

建设工程质量检测管理办法3月1日起施行

建设工程质量检测管理办法&#xff08;2022年12月29日中华人民共和国住房和城乡建设部令第57号公布 自2023年3月1日起施行&#xff09;第一章 总则第一条 为了加强对建设工程质量检测的管理&#xff0c;根据《中华人民共和国建筑法》《建设工程质量管理条例》《建设工程抗震…

液晶12864显示字符

液晶12864简介12864是128*64点阵液晶模块的点阵数简称。基本参数1、低电源电压&#xff08;VDD:3.0&#xff5e;5.5V&#xff09;。2、显示分辨率:12864点。3、内置汉字字库&#xff0c;提供8192个1616点阵汉字。4、内置128 个168 点阵字符。5、2MHZ 时钟频率。6、显示方式&…

PriorityQueue

PriorityQueue其本质是一个优先级队列的集合。 1. 优先级队列 那什么是优先级队列呢&#xff1f;我们先从它的概念聊起。 概念&#xff1a; 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&a…

Grafana 中文入门教程 | 构建你的第一个仪表盘

Grafana 读音&#xff1a;/grəˈfɑːnˌɑː/ 在大厂工作久了&#xff0c;时常对一些工具的存在觉得理所当然。 比如说&#xff0c;需要计算资源的时候&#xff0c;一个配置文件就可以要来两百台虚拟化好的机子。需要试下缓存&#xff1f;点下鼠标就可以要到几十个配置好的…

简单高效的字符串匹配算法

Quick Search算法 算法简介 Quick Search算法属于Sunday算法的一种。Sunday算法由Daniel M Sunday在1990年提出。论文原文&#xff1a;A VERV FAST SU6STRINC SEARCH ALGORITHM 在论文中&#xff0c;作者提出了三个不同的算法&#xff1a;Quick Search算法、Maximal Shift算…

IO流——字符缓冲流

复制文本文件–一次读写一个字符 –一次读写一个字符数组 不带参数&#xff1a; package com.demo03;import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;/** 需求&#xff1a;* 把项目路径下的FileWriterDemo.java中的内容复制到项目路径…

上门服务小程序怎么开发-上门服务小程序源码功能

目前上门服务类型新型行业已经占据了很大的市场所在&#xff0c;上门家政服务&#xff0c;上门做饭&#xff0c;上门按摩&#xff0c;上门私教&#xff0c;上门美容没发等等一些列的&#xff0c;目前上门系列的在市场分额还是特别大的&#xff0c;趋势比较大&#xff0c;今天就…

Docker 安装镜像与使用命令

按照阿里云的操作文档安装 docker&#xff1a;https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 这里仅写 Windows 版的&#xff0c;其他版本见上面的链接 1. 安装&#xff0f;升级Docker客户端 对于Windows 10以下的用户&#xff0c;推荐使用Docker ToolboxWin…

一文带你了解UI自动化测试框架

PythonSeleniumUnittestDdtHTMLReport分布式数据驱动自动化测试框架结构 1、Business&#xff1a;公共业务模块&#xff0c;如登录模块&#xff0c;可以把登录模块进行封装供调用 ------login_business.py from Page_Object.Common_Page.login_page import Login_Page from H…

九龙证券|首月定增市场“开门红” 上市公司密集融资谋扩产

2023年首月&#xff0c;A股定增市场迎来“开门红”。 据上海证券报记者统计&#xff0c;年初至今&#xff0c;已有35家公司完成定增&#xff0c;合计募资986.86亿元&#xff0c;较上年同期的477.3亿元大幅增长超100%&#xff0c;延续了2022年末的高位运行态势。同时&#xff0c…

前端项目发布后,如何使正在使用的用户更新为最新的版本?

1.背景 每次项目上线后&#xff0c;异常监控总是零零散散报一些资源加载或者解析失败的告警 仔细对比chunk的hash值会发现已经是上一版本的js文件为什么会出现这个问题呢&#xff1f;也不难想到&#xff0c;项目是单页应用&#xff0c;页面使用懒加载分多个chunk打包&#xff…

SDP零信任网络安全架构

安全狗零信任SDP接入解决方案基于“以身份认证为中心&#xff0c;以信任为基础&#xff0c;持续动态授权认证”的理念&#xff0c;打造企业全方位立体业务访问安全体系。 其SDP零信任网络安全架构如下图&#xff1a; SDP零信任产品优势 1、多维度终端环境感知 系统风险感知&…

浅谈--声调

声调 根据声调的有无&#xff0c;我们可以把世界上的语言分为声调语言和非声调语言两大类。 非声调语言&#xff0c;并不是说音节没有高低升降的音高变化&#xff0c;只是这种变化只能改变语气作用&#xff0c;并不能区别意义。如&#xff1a;在英语单词book&#xff0c;音高…

Nacos 初始

1.Nacos 的安装使用。 nacos的安装步骤 1.端口配置 Nacos的默认端口是8848&#xff0c;如果你电脑上的其它进程占用了8848端口&#xff0c;请先尝试关闭该进程。 如果无法关闭占用8848端口的进程&#xff0c;也可以进入nacos的conf目录&#xff0c;修改配置文件中的端口&am…

(考研湖科大教书匠计算机网络)第三章数据链路层-第五节:点对点协议PPP

专栏目录首页&#xff1a;【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一&#xff1a;点对点协议&#xff08;PPP&#xff09;概述二&#xff1a;PPP协议组成部分三&#xff1a;PPP协议帧格式四&#xff1a;PPP协议的透明传输&#xff08;1&#xff09;字节填充法…

磨金石教育摄影技能干货分享|优秀摄影作品如何表现创意与思想的

在摄影活动中并不是简单的利用镜头把事物拍下来&#xff0c;而是要尽量的融入作者对当时当地事物的情意表达出来。利用摄影技术&#xff0c;因时制宜展现个人的创意&#xff0c;然后表达自己的思想。下面给大家分享一组摄影大赛获奖作品&#xff0c;看看这些获奖作品如何做到的…

vue(iviewui) 输入框历史记录

安装&#xff1a;npm install good-storage -S 缓存cache.js: /*把搜索的结果保存下来*/ /*用export把方法暴露出来*/ /*定义存储搜索的key _search_定义内部使用的key*/ let searches_list [] const SEARCH_MAX_LENGTH15 /*插入方法 arr存储的数据 val传入存储的值 comp…

leetcode-每日一题-1664-生成平衡数组的方案数(中等,动态规划)

时间长不做动态规划的题目&#xff0c;现在突然看过去有些生疏&#xff0c;第一眼看到这个题目想了一下暴力&#xff0c;然后突然注意到了题目的难度是中等&#xff0c;力扣里面的中等难度的题目都是没有暴力可以做出来的&#xff0c;目前我做这么多题来看的话&#xff0c;第一…

StarRocks荣获开源中国“2022 年度优秀开源技术团队”

近日&#xff0c;国内知名开源技术社区开源中国&#xff08;OSCHINA&#xff09;&#xff0c;综合了平台上各大认证官方技术团队、开源社区账号年度发表的内容频率及质量、开展各种活动运营积极性等多方面表现&#xff0c;向StarRocks颁发了 OSCHINA“2022年度优秀开源技术团队…