本文介绍: 于是乎 修改php.ini 去掉grpc.so 的扩展。当我修改了App目录下任意一个文件 保存后。但easyswoole 监听某个目录。此处我监听的是App 目录。重启easyswoole 服务后。然后在重启php-fpm 后。
首先看一下运行环境
swoole version 4.8.11
php version 7.4.33
easyswoole version 3.4.6
在easyswoole 的入口文件 如下:
<?php
namespace EasySwooleEasySwoole;
use AppWebSocketWebSocketEvents;
use AppWebSocketWebSocketParser;
use EasySwooleComponentProcessManager;
use EasySwooleEasySwooleAbstractInterfaceEvent;
use EasySwooleEasySwooleConfig;
use EasySwooleEasySwooleSwooleEventRegister;
use EasySwooleComponentDi;
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 EasySwooleHotReloadHotReloadOptions;
$hotReload = new EasySwooleHotReloadHotReload($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 EasySwooleSocketConfig();
$config->setType($config::WEB_SOCKET);
$config->setParser(WebSocketParser::class);
$dispatcher = new EasySwooleSocketDispatcher($config);
$config->setOnExceptionHandler(function (
SwooleServer $server,
Throwable $throwable,
string $raw,
EasySwooleSocketClientWebSocket $client,
EasySwooleSocketBeanResponse $response
) {
$response->setMessage('system error!' . $throwable->getMessage());
$response->setStatus($response::STATUS_RESPONSE_AND_CLOSE);
});
$register->set($register::onMessage,
function (SwooleWebsocketServer $server, SwooleWebsocketFrame $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
热重载生效了 到现在还没搞明白啥情况啊 晕了
原文地址:https://blog.csdn.net/u013416034/article/details/135411122
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_52898.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。