gatewayWorker分离部署,启动报错

嘻嘻哈哈

gatewayWorker分离部署,启动报错:Waring: Events::onMessage is not callable

我有2台服务器,以下简称A和B,现在要将业务拆开
A服务器负责Gateway和register,B服务器负责处理businessworker。

A服务器,start_gateway.php配置
截图

A服务器,start_register.php配置
截图

只配置了这两个,start_businessworker.php 被我删除了。

以下是B服务器,start_businessworker.php的配置:
截图

当我启动B服务器时,出现报错:Waring: Events::onMessage is not callable
并且Events.php onWorkerStart方法也没有执行。

以上配置是按照官网文档来配置的,目前两个服务器都能互通,用的是阿里云同一地域下的服务器,比如B服务器使用内网IP,连接A服务器的redis等都是正常的。

以上出现的问题应该如何解决!

我在B服务器start_businessworker.php 中补充了以下代码,可以执行Events.php中的方法了,但是又遇到了通信问题。

require_once __DIR__ . '/Events.php'; 
$worker->eventHandler = 'Events'; 

Events.php中执行了以下方法,并且成功打印。ws客户端连接A服务器成功后,B服务器执行的 Gateway::sendToAll("123"); 没有任何效果,ws客户端收不到该信息

    public static function onWorkerStart($businessWorker)
    {
        if ($businessWorker->id == 0) {
            echo "【0】进程号".posix_getpid().PHP_EOL;
            Gateway::sendToAll("123");
        }

    }
324 1 0
1个回答

walkor

onWorkerStart执行的时候客户端还没连上呢

  • 嘻嘻哈哈 2024-01-07

    我是让客户端先连接上,然后重启的B服务器,重启时会执行onWorkerStart。客户端连接的是A服务器,连接不会断开

  • walkor 2024-01-08

    A B服务器也要互相连接,B服务器启动后onWorkerStart的时候还没连上

  • walkor 2024-01-08

    用定时器试下

  • 嘻嘻哈哈 2024-01-08

    了解了,确实是这个问题,感谢

🔝