自定义Bootstrap会执行多次start方法

cuihaifeng1234

问题描述

自定义业务初始化继承Bootstrap接口,重新start后启动程序,会发现一直在执行start方法

程序代码或配置

class MqttPublisher implements Bootstrap
{

    protected static $client = null;

    const MQTT_ADDRESS = "mqtt://0.0.0.0:1883";
    const MQTT_USERNAME = "***";
    const MQTT_PASSWORD = "***";

    public static function start(?Worker $worker)
    {
        var_dump($worker->name);
        return;
//        $client = new Client(self::MQTT_ADDRESS,[
//            'username' => self::MQTT_USERNAME,
//            'password' => self::MQTT_PASSWORD,
//            'debug' => true,
//            'client_id' => 'duola_server_mqtt_client2',
//        ]);
//        $client->onConnect = function ($client){
//            echo "已连接";
//        };

//        $client->connect();

//        self::$client = $client;
    }
}

操作系统环境及workerman/webman等具体版本

Workerman版本 5.1.1
Webman版本 2.1.2
WebmanAdmin版本 2.1.7
PHP版本 8.3.16
MYSQL版本 8.0.41
操作系统 Linux

79 3 0
3个回答

cuihaifeng1234

现在的问题是我想全局共享一个Mqtt客户端对象,如果做呢?

Gin

webman是多进程的,进程间是独立的,如果你想每个进程都使用 Mqtt客户端对象,需要每个进程都要初始化一次。
进程A初始化的Mqtt客户端对象,在进程B是用不了的

🔝