
offsetGet 메서드는 SwooleConnectionIterator 클래스의 인스턴스에서 특정 인덱스에 있는 연결을 반환하는 역할을 합니다.
인자는 인덱스 값으로 넘겨야 합니다. 위 코드에서 $server->connections[] 에 접근할 때는 인덱스인 $fd를 넘겨주었습니다.
인덱스가 존재하지 않는 경우에 offsetGet 메서드는 Notice: Undefined offset 에러를 발생시킵니다.
예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
php
$server = new swoole_server('127.0.0.1', 9501);
$server->on('connect', function ($server, $fd) {
echo "Client $fd connectedn";
});
$server->on('receive', function ($server, $fd, $from_id, $data) {
echo "Client $fd received message: $datan";
});
$server->on('close', function ($server, $fd) {
echo "Client $fd disconnectedn";
});
$server->start();
위 코드에서 $server->connections[] 은 SwooleConnectionIterator 인스턴스입니다.
#hostingforum.kr
php
$connection = $server->connections[$fd];
위 코드에서 offsetGet 메서드는 인덱스인 $fd를 넘겨받아 연결을 반환합니다.
#hostingforum.kr
php
$server->connections[$fd]->close();
위 코드에서 offsetGet 메서드는 인덱스인 $fd를 넘겨받아 연결을 반환하고 close 메서드를 호출합니다.
#hostingforum.kr
php
$server->connections[$fd]->send("Hello, client!");
위 코드에서 offsetGet 메서드는 인덱스인 $fd를 넘겨받아 연결을 반환하고 send 메서드를 호출합니다.
#hostingforum.kr
php
$server->connections[$fd]->close();
위 코드에서 offsetGet 메서드는 인덱스인 $fd를 넘겨받아 연결을 반환하고 close 메서드를 호출합니다.
offsetGet 메서드는 다음과 같은 예외를 발생시킬 수 있습니다.
- Notice: Undefined offset : 인덱스가 존재하지 않는 경우에 발생합니다.
- Fatal error: Uncaught Error: Call to a member function on null : 인덱스가 존재하지 않는 경우에 발생합니다.
위 예외를 방지하기 위해 인덱스가 존재하는지 확인하는 코드를 작성할 수 있습니다.
#hostingforum.kr
php
if (isset($server->connections[$fd])) {
$connection = $server->connections[$fd];
// 코드를 작성할 수 있습니다.
} else {
// 인덱스가 존재하지 않는 경우에 처리할 코드를 작성할 수 있습니다.
}
2025-04-12 04:59