Как передать сообщение с сервера на несколько клиентов, используя храповик php, чтобы преодолеть снижение производительности

$server = IoServer::factory(

        new HttpServer(
            new WsServer(
                new Chat()
            )
        ),

        8080,
        '0.0.0.0'

    );

$currentTime =  new DateTime(date('Y-m-d H:i:s'));

$server->loop->addPeriodicTimer(1, 

     function ($timer) use ($server, &$currentTime) {
       $currentTime = $currentTime->modify('+01 seconds');

       $clients = Chat::$cl;

       foreach ($clients as $key => $client) {

            $client->send(json_encode($currentTime->format('H:i:s')));

        }

 });

$server->run();

Я подозреваю, что именно здесь я делаю это неправильно:

$clients = Chat::$cl;

           foreach ($clients as $key => $client) {

                $client->send(json_encode($currentTime->format('H:i:s')));

            }

Видите ли, я каждую секунду перебираю все подключенные клиенты, чтобы передать сообщение из файла сервера.

Я думаю, что это является причиной снижения производительности моего сайта. Как передать сообщение каждому подключенному клиенту, не проходя таким образом.

Это многопоточность или есть лучший способ открыть соединение с несколькими клиентами с помощью веб-сокета Rathet?

Почему-то мне все еще нужно передавать сообщение каждую секунду.

0 ответов

Другие вопросы по тегам