@UntitledNikname

Почему Workerman видит все плдключения как одно?

use Workerman\Worker;

require_once __DIR__ . '/vendor/autoload.php';

// #### create socket and listen 1234 port ####
$tcp_worker = new Worker('tcp://0.0.0.0:1234');

// 4 processes
$tcp_worker->count = 4;

// Emitted when new connection come
$tcp_worker->onConnect = function ($connection) {
    echo "New Connection\n";
};

// Emitted when data received
$tcp_worker->onMessage = function ($connection, $data) {
    // Send data to client
    $connection->send("Hello $data \n");
};

// Emitted when new connection come
$tcp_worker->onClose = function ($connection) {
    echo "Connection closed\n";
};

Worker::runAll();
  • Вопрос задан
  • 439 просмотров
Решения вопроса 1
light-source
@light-source
Команда онлайн консультанта LightChat.org
Потому что вы запускаете 4 процесса воркера, соответственно коннекты разбрасываются по ним равномерно и у одного процесса воркера ($tcp_worker->connections) в тот момент только одно соединение. А в консоли команда вернет кол-во коннектов для всех процессов. Более того вы не сможете просто отправить сообщение всем коннектам на разных воркерах, по этому если вам принципиально нет необходимости в 4 процессах, просто установите $tcp_worker->count = 1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 23:00
5000 руб./за проект
19 апр. 2024, в 20:43
20000 руб./за проект