<?php
use Workerman\Timer;
use Workerman\Worker;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker();
$worker->onWorkerStart = function () {
$mqttClients = [];
for ($i = 0; $i < 10000; $i++) {
$mqttClients[$i] = new Workerman\Mqtt\Client('mqtt://emqx:1883');
$mqttClients[$i]->onConnect = function ($mqttClient) {
$mqttClient->subscribe('test');
};
$mqttClients[$i]->onMessage = function ($topic, $content) use ($i) {
echo $i, "\t", $topic, "\t", $content, "\n";
};
$mqttClients[$i]->connect();
}
$num = 1;
Timer::add(1, function () use ($mqttClients, &$num) {
try {
$mqttClients[0]->publish('test', 'hello ' . $num);
$num += 1;
} catch (Throwable $e) {
echo "Throwable:", $e->getMessage(), "\n";
}
});
};
try {
Worker::runAll();
} catch (Throwable $e) {
echo $e->getMessage(), "\n";
}