自定义业务初始化继承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版本 5.1.1
Webman版本 2.1.2
WebmanAdmin版本 2.1.7
PHP版本 8.3.16
MYSQL版本 8.0.41
操作系统 Linux
现在的问题是我想全局共享一个Mqtt客户端对象,如果做呢?
我发现Bootstrap的start 是每个worker都会执行
参考 这个 https://www.workerman.net/a/1680
收到谢谢
webman是多进程的,进程间是独立的,如果你想每个进程都使用 Mqtt客户端对象,需要每个进程都要初始化一次。
进程A初始化的Mqtt客户端对象,在进程B是用不了的
感谢,老大。没毛病