当前位置: 首页 > news >正文

记一次 easyswoole 热重载失效复盘 grpc扩展惹的祸

首先看一下运行环境


swoole version                4.8.11
php version                   7.4.33
easyswoole version            3.4.6

 在easyswoole 的入口文件  如下:

<?php
namespace EasySwoole\EasySwoole;
use App\WebSocket\WebSocketEvents;
use App\WebSocket\WebSocketParser;
use EasySwoole\Component\Process\Manager;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Config;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use \EasySwoole\Component\Di;class EasySwooleEvent implements Event
{public static function initialize(){date_default_timezone_set('Asia/Shanghai');// 加载Config下所有配置self::loadConfig();}public static function mainServerCreate(EventRegister $register){// 热重载监视器$hotReloadOptions = new \EasySwoole\HotReload\HotReloadOptions;$hotReload = new \EasySwoole\HotReload\HotReload($hotReloadOptions);$hotReloadOptions->setMonitorFolder([EASYSWOOLE_ROOT . '/App']);$server = ServerManager::getInstance()->getSwooleServer();$hotReload->attachToServer($server);// websocket注册self::InitWebSocket($register);// 注册 FastCache缓存$register->add($register::onWorkerStart, function (\swoole_server $server, int $workerId) {});}public static function InitWebSocket(EventRegister $register){$config = new \EasySwoole\Socket\Config();$config->setType($config::WEB_SOCKET);$config->setParser(WebSocketParser::class);$dispatcher = new \EasySwoole\Socket\Dispatcher($config);$config->setOnExceptionHandler(function (\Swoole\Server $server,\Throwable $throwable,string $raw,\EasySwoole\Socket\Client\WebSocket $client,\EasySwoole\Socket\Bean\Response $response) {$response->setMessage('system error!' . $throwable->getMessage());$response->setStatus($response::STATUS_RESPONSE_AND_CLOSE);});$register->set($register::onMessage,function (\Swoole\Websocket\Server $server, \Swoole\Websocket\Frame $frame) use ($dispatcher) {$dispatcher->dispatch($server, $frame->data, $frame);});// 注册服务事件$register->add(EventRegister::onOpen, [WebSocketEvents::class, 'onOpen']);$register->add(EventRegister::onClose, [WebSocketEvents::class, 'onClose']);}/*** Description:加载自定义配置文件*/public static function loadConfig(){Config::getInstance()->loadDir(EASYSWOOLE_ROOT . '/Config');}}

启动服务  命令:

php easyswoole server start

此处我监听的是App 目录   

当我修改了App目录下任意一个文件 保存后 

FileScanner hot reload initialize at Linux in PID 878774

但easyswoole 监听某个目录 不生效了

真的是  我查了半天,包括做减法,只保留easyswoole 框架最小代码,结果还是不行,突然想起前几天编译了php 的一个grpc 的扩展  于是我猜测会不会是php 环境所导致。

于是乎  修改php.ini  去掉grpc.so 的扩展  

然后在重启php-fpm 后

重启easyswoole 服务后

修改文件后出现   HOT_RELOAD: reloaded at 1704433881

热重载生效了   到现在还没搞明白啥情况啊    晕了 

相关文章:

记一次 easyswoole 热重载失效复盘 grpc扩展惹的祸

首先看一下运行环境 swoole version 4.8.11 php version 7.4.33 easyswoole version 3.4.6 在easyswoole 的入口文件 如下&#xff1a; <?php namespace EasySwoole\EasySwoole; use App\WebSocket\WebSocketEvents; use Ap…...

存储过程从表中获取数据库名称

---------------业务数据库信息 CREATE TABLE [dbo].[app_erp_datbabase_conf] ( [id] [int] IDENTITY(1,1) NOT NULL, [database_type] [varchar](200) NOT NULL, [database_name] [varchar](200) NOT NULL, [create_time] [datetime] NULL, [modify_t…...

.NET 反射的介绍和简单应用

什么是反射&#xff1f; 反射就是动态发现类型信息的能力。它帮助程序设计人员在程序运行时利用一些信息去动态地使用类型&#xff0c;这些信息在设计时是未知的&#xff0c;这种能力类似于后期绑定。反射还支持的更高级的行为&#xff0c;能在运行时动态创建新类型&#xff0…...

在drawio中使用BPMN2.0绘制详细的业务流程图和编排模型

在drawio中使用BPMN2.0绘制详细的业务流程图和编排模型 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功…...

GO——defer函数

定义 当前函数返回之前执行传入函数的一个关键字 执行时间 当前函数返回前执行 常用于 关闭文件描述符关闭数据库链接解锁资源 原理 参考&#xff1a;https://draveness.me/golang/docs/part2-foundation/ch05-keyword/golang-defer/ 后调用的 defer 函数会先执行&…...

【UE Niagara学习笔记】06 - 制作火焰喷射过程中飞舞的火星

在上一篇博客&#xff08;【UE Niagara学习笔记】05 - 喷射火焰顶部的蓝色火焰&#xff09;的基础上继续实现喷射火焰的火星的效果。 目录 效果 步骤 一、创建材质实例 二、添加新的发射器 2.1 设置粒子材质 2.2 设置发射器持续生成粒子 2.3 设置粒子生成数量 2.4 设…...

机器学习笔记一之入门概念

目录 一 基本分类二 按模型分类概率模型&#xff08;Probabilistic Models&#xff09;非概率模型&#xff08;Non-Probabilistic Models&#xff09;对比结论线性模型 (Linear Models)非线性模型 (Non-linear Models)对比 三 按算法分类1.批量学习&#xff08;Batch Learning&…...

用于脚本支持的 CSS 媒体查询

Chrome 120 于近日发布&#xff0c;在这个版本中&#xff0c;我们获得了用于脚本支持的 CSS 媒体查询。简单地说&#xff0c;此媒体查询允许我们测试脚本语言是否可用&#xff0c;并根据支持定制页面内容和样式。我是白特&#xff0c;让我们一起来学习下吧。 媒体查询语法 媒…...

【HBase】——整合Phoenix

1 概述 Phoenix 是 HBase 的开源 SQL 皮肤。可以使用标准 JDBC API 代替 HBase 客户端 API 来创建表&#xff0c;插入数据和查询 HBase 数据。   Phoenix 在 5.0 版本默认提供有两种客户端使用&#xff08;瘦客户端和胖客户端&#xff09;&#xff0c;在 5.1.2 版本 安装包中…...

【操作系统xv6】学习记录5--实验1 Lab: Xv6 and Unix utilities

ref:https://pdos.csail.mit.edu/6.828/2020/xv6.html 实验&#xff1a;Lab: Xv6 and Unix utilities 环境搭建 实验环境搭建&#xff1a;https://blog.csdn.net/qq_45512097/article/details/126741793 搭建了1天&#xff0c;大家自求多福吧&#xff0c;哎。~搞环境真是折磨…...

Python从入门到网络爬虫(控制语句详解)

前言 做任何事情都要遵循一定的原则。例如&#xff0c;到图书馆去借书&#xff0c;就需要有借书证&#xff0c;并且借书证不能过期&#xff0c;这两个条件缺一不可。程序设计亦是如此&#xff0c;需要使用流程控制实现与用户的交流&#xff0c;并根据用户需求决定程序“做什么…...

transbigdata笔记:数据预处理

0 数据 使用 transbigdata/docs/source/gallery/data/TaxiData-Sample.csv at main ni1o1/transbigdata (github.com) 和transbigdata/docs/source/gallery/data/sz.json at main ni1o1/transbigdata (github.com) 0.1 导入库 import transbigdata as tbd import pandas …...

java中解码和编码出现乱码原因

一、UTF-8和GBK编码方式 如果采用的是UTF-8的编码方式&#xff0c;那么1个英文字母 占 1个字节&#xff0c;1个中文占3个字节如果采用GBK的编码方式&#xff0c;那么1个英文字母 占 1个字节&#xff0c;1个中文占2个字节 二、idea和eclipse的默认编码方式 其实idea和eclipse的…...

60V降压3.3V稳压芯片 60V降压5V稳压芯片60V降压12V稳压芯片

60V降压3.3V稳压芯片、60V降压5V稳压芯片和60V降压12V稳压芯片是针对不同输出电压需求的降压稳压芯片。这些芯片通常被用于工业控制、通信设备、汽车电子和其他需要高电压输入并提供稳定输出电压的场合。 这些芯片通常具有高效率、低功耗和高稳定性的特点&#xff0c;能够在输…...

01第一个Mybatis程序+引入Junit+引入日志文件logback

Mybatis MyBatis本质上就是对JDBC的封装&#xff0c;通过MyBatis完成CRUD。而对于JDBC&#xff0c;SQL语句写死在Java程序中&#xff0c;不灵活。改SQL的话就要改Java代码。违背开闭原则OCP。对于事务机制&#xff0c;MyBatis支持 或managed模式&#xff0c;JDBC模式中MyBatis…...

音乐制作软件Studio One mac有哪些特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…...

开源C语言库Melon之日志模块

本文向大家介绍一个名为Melon的开源C语言库的日志模块。 简述Melon Melon是一个包含了开发中常用的各类组件的开源C语言库&#xff0c;支持Linux、MacOS、Windows系统&#xff0c;可用于服务器开发亦可用于嵌入式开发&#xff0c;无第三方软件依赖&#xff0c;安装简单&…...

[NOIP2006 提高组] 作业调度方案(修改)

题目&#xff1a; 这里对于之前的题目进行修改记录。果然还是受不了等待&#xff0c;利用晚饭时间又看了这个题目。于是发现了问题。 之前的博客&#xff1a;https://blog.csdn.net/KLSZM/article/details/135522867?spm1001.2014.3001.5501 问题修改描述 上午书写的代码中是…...

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -全局异常统一处理实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…...

浏览器缓存引发的odoo前端报错

前两天&#xff0c;跑了一个odoo16项目&#xff0c;莫名其妙的前端报错&#xff0c; moment.js 报的错&#xff0c; 这是一个时间库&#xff0c;不是我自己写的代码&#xff0c;我也没做过任何修改&#xff0c;搞不清楚为什么报错。以为是odoo的bug&#xff0c;所以从gitee下载…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

轻量级Docker管理工具Docker Switchboard

简介 什么是 Docker Switchboard &#xff1f; Docker Switchboard 是一个轻量级的 Web 应用程序&#xff0c;用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器&#xff0c;使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...