네트워크를 통신 할 때 애플리케이션은 다음을 포함하여 일부 일반적인 네트워크 예외를 발견 할 수 있습니다.
이러한 문제는 프로그램의 정상적인 운영에 영향을 줄 수 있으며 개발자는이를 효과적으로 처리해야합니다.
PHP는 네트워크 통신의 예외를 처리하는 몇 가지 방법을 제공합니다. 아래에서는 흐름 제어 기능 및 오류 제어 연산자를 통해 이러한 예외를 효과적으로 관리하는 방법을 살펴 봅니다.
PHP의 흐름 제어 기능 (예 : stream_set_timeout () )을 사용하면 연결 시간 초과로 인한 프로그램 말기를 피하기 위해 스트림의 시간 초과를 설정할 수 있습니다.
다음은 Stream_Socket_Client ()를 사용하여 TCP 연결을 설정하고 Stream_set_Timeout () 를 통해 타임 아웃을 설정하는 샘플 코드입니다.
$stream = stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 5);
if ($stream === false) {
echo '네트워크 예외:', $errstr, ' (', $errno, ')';
} else {
stream_set_timeout($stream, 5); // 시간 초과를 설정하십시오5두번째
fwrite($stream, "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n");
$response = stream_get_contents($stream);
$meta = stream_get_meta_data($stream);
if ($meta['timed_out']) {
echo '네트워크 예외:연결 시간 초과';
} else {
echo '응답 메시지:', $response;
}
fclose($stream);
}
이 예에서는 먼저 Stream_Socket_Client () 를 통해 TCP 연결을 생성하고 타임 아웃 한도를 5 초로 설정합니다. 그런 다음 HTTP 요청을 보내고 응답을받습니다. 타임 아웃에 도달하는지 판단하면 stream_get_meta_data ()를 사용하여 타임 아웃 오류가 발생하는지 확인합니다.
네트워크 예외를 처리하는 또 다른 방법은 PHP의 오류 제어 연산자 ( @ )를 사용하는 것입니다. 이 연산자를 통해 개발자는 특정 네트워크 예외를 무시하고 오류 메시지를 처리 할 수 있습니다.
다음 코드는 @ 연산자를 사용하여 가능한 예외를 처리하는 방법을 보여줍니다.
$stream = @stream_socket_client('tcp://www.example.com:80', $errno, $errstr, 5);
if ($stream === false) {
echo '네트워크 예외:', $errstr, ' (', $errno, ')';
} else {
fwrite($stream, "GET / HTTP/1.1\r\nHost: www.example.com\r\nConnection: close\r\n\r\n");
$response = @stream_get_contents($stream);
if (empty($response)) {
echo '네트워크 예외:', error_get_last()['message'];
} else {
echo '응답 메시지:', $response;
}
fclose($stream);
}
이 코드에서 @ 연산자는 stream_socket_client () 및 stream_get_contents () 로 인한 가능한 오류를 무시하는 데 사용됩니다. $ 응답이 비어 있으면 네트워크에서 예외가 발생했으며 error_get_last () 를 통해 오류 메시지를 얻습니다.
네트워크 예외를 처리 할 때 개발자는 다음과 같은 점에 특별한주의를 기울여야합니다.
네트워크 커뮤니케이션 예외는 개발에서 일반적인 문제이며 올바른 예외 처리 방법을 마스터하는 것이 중요합니다. 흐름 제어 기능 및 오류 제어 연산자를 사용하면 프로그램 충돌 또는 느린 응답을 일으키는 네트워크 예외를 효과적으로 피할 수 있습니다. 실제 개발에서 개발자는 특정 시나리오에 따라 적절한 처리 방법을 선택하고 프로그램의 안정성을 보장하기 위해 일부 세부 사항에주의를 기울여야합니다.