connections
설명:
array Worker::$connections
형태는
array(id=>connection, id=>connection, ...)
이 속성에는 현재 프로세스의 모든 클라이언트 연결 객체가 저장되어 있으며, 여기서 id는 connection의 id 번호입니다. 자세한 내용은 매뉴얼의 TcpConnection의 id 속성를 참조하세요.
$connections는 브로드캐스트 시 또는 연결 id에 따라 연결 객체를 얻는 데 매우 유용합니다.
connection의 번호가 $id인 경우, $worker->connections[$id]를 통해 해당 connection 객체를 쉽게 얻을 수 있으며, 이를 통해 해당 소켓 연결을 조작할 수 있습니다. 예를 들어, $worker->connections[$id]->send('...')를 통해 데이터를 전송할 수 있습니다.
주의: 연결이 닫히면(onClose가 발생하면) 해당 connection은 $connections 배열에서 삭제됩니다.
주의: 개발자는 이 속성에 대해 수정 작업을 하지 마세요. 그렇지 않으면 예측할 수 없는 상황이 발생할 수 있습니다.
예제
use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('text://0.0.0.0:2020');
// 프로세스 시작 시 모든 클라이언트 연결에 데이터를 정기적으로 전송하는 타이머 설정
$worker->onWorkerStart = function($worker)
{
// 10초마다
Timer::add(10, function()use($worker)
{
// 현재 프로세스의 모든 클라이언트 연결을 순회하여 현재 서버의 시간을 전송
foreach($worker->connections as $connection)
{
$connection->send(time());
}
});
};
// worker 실행
Worker::runAll();