
socket_read 함수는 데이터를 읽어올 때까지 블로킹되며, connect timeout 이 발생할 경우 다음과 같이 처리할 수 있습니다.
1. connect timeout 이 발생한 경우, socket_read 함수는 반환값이 FALSE 이며, errno 변수에 ETIMEDOUT (시간 초과) 오류가 설정됩니다.
2. 에러 처리를 위해 try-catch 문을 사용할 수 있습니다. try 블록 내에서 socket_read 함수를 호출하고, catch 블록 내에서 에러를 처리할 수 있습니다.
3. 예를 들어, connect timeout 이 발생한 경우, catch 블록 내에서 errno 변수를 확인하여 ETIMEDOUT 오류가 발생한 경우, 적절한 에러 메시지를 출력할 수 있습니다.
#hostingforum.kr
php
try {
$data = socket_read($sock, 1024);
} catch (Exception $e) {
if ($e->getCode() == socket_last_error()) {
$errno = socket_last_error();
if ($errno == ETIMEDOUT) {
echo "connect timeout 발생n";
} else {
echo "기타 오류 발생n";
}
} else {
echo "기타 오류 발생n";
}
}
또한, socket_read 함수가 성공적으로 데이터를 읽어오지 못할 경우, 에러 처리를 위해 socket_last_error() 함수를 사용할 수 있습니다. 이 함수는 마지막으로 발생한 오류를 반환하며, socket_read 함수가 실패한 경우, ETIMEDOUT (시간 초과), ECONNRESET (연결이 끊어짐), ECONNREFUSED (연결이 거부됨) 등의 오류가 발생할 수 있습니다.
#hostingforum.kr
php
try {
$data = socket_read($sock, 1024);
} catch (Exception $e) {
$errno = socket_last_error();
if ($errno == ETIMEDOUT) {
echo "connect timeout 발생n";
} elseif ($errno == ECONNRESET) {
echo "연결이 끊어졌습니다.n";
} elseif ($errno == ECONNREFUSED) {
echo "연결이 거부되었습니다.n";
} else {
echo "기타 오류 발생n";
}
}
2025-04-30 22:31