오류 처리는 PHP를 사용하여 소켓을 프로그래밍 할 때 매우 중요하지만 간과되는 링크입니다. 네트워크 연결, 데이터 전송 등을 수행하는 경우 오류 메시지가 문제를 신속하게 찾는 데 도움이 될 수 있습니다. PHP는 소켓 오류 메시지를 처리하고 인쇄하기 위해 Socket_clear_Error () 및 Socket_strerror () 의 두 가지 주요 기능을 제공합니다.
socket_strerror () :이 함수는 오류 코드를 수신하고 (일반적으로 socket_last_error () 를 통해 얻음)를 수신하고 해당 오류 메시지 문자열을 반환합니다.
socket_clear_error () : 이전 소켓의 오류 정보를 지우는 데 사용되거나 전 세계적으로 오래된 오류가 후속 판단에 영향을 미치지 않도록합니다.
이 두 기능은 개발자가 처리 된 오류 로그를 녹음하는 동안 오류 로그를 제거하는 데 도움이되며 후속 작업을위한 깨끗한 환경을 제공하는 데 도움이 될 수 있습니다.
일반적인 사용 시나리오를 살펴 보겠습니다. 존재하지 않는 서버 주소에 연결하고 오류를 포착하십시오.
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket) {
die("Socket 창조가 실패했습니다: " . socket_strerror(socket_last_error()) . "\n");
}
$host = 'm66.net'; // 샘플 도메인 이름
$port = 12345;
$result = @socket_connect($socket, $host, $port);
if (!$result) {
$errorCode = socket_last_error($socket);
$errorMsg = socket_strerror($errorCode);
// 인쇄 로그
error_log("연결이 실패했습니다 [{$errorCode}]: {$errorMsg}");
// 명확한 오류
socket_clear_error($socket);
}
socket_close($socket);
위 코드에서 :
@socket_connect를 사용하여 기본 오류 메시지를 억제하십시오.
Socket_last_error ()를 사용하여 오류 코드를 얻습니다.
읽을 수있는 오류 정보를 얻으려면 socket_strerror ()를 호출합니다.
로그를 인쇄하려면 Error_Log () 를 사용하십시오.
마지막으로 Socket_clear_Error ()를 사용하여 잔류 오류가 후속 처리에 영향을 미치지 않도록 오류를 지우십시오.
소켓 매개 변수를 Socket_last_error () 또는 Socket_clear_error () 로 전달하지 않으면 최신 소켓 오류 (글로벌 레벨)에서 작동합니다.
오류를 지우는 것은 소켓 상태를 재설정하지 않으며 치명적인 오류가 발생하면 소켓이 여전히 닫히고 재현되어야합니다.
로깅 로그는 개발자가 다른 환경에서 특정 의미를 찾을 수 있도록 오류 코드가 포함되어 있음을 시사합니다.
서버 개발 : 서버가 클라이언트 연결에 리리스하는 이유를 기록합니다.
자동화 스크립트 : 레트리 메커니즘은 네트워크 작업 실패 후 명확한 오류 코드에 의존합니다.
디버깅 도구 : 개발 중에 오류 로그 시각화는 포지셔닝 효율을 향상시킵니다.
네트워크 프로그래밍에서 오류 처리 메커니즘의 품질은 종종 프로젝트의 유지 가능성을 결정합니다. Socket_strerror () 를 통해 명확한 오류 정보를 얻은 다음 Socket_clear_error ()를 사용하여 환경 잔류 물을 제거하여 개발자가 PHP 프로그램을 더 강력하고 쉽게 쓰는 데 도움이 될 수 있습니다. 다음에 연결 실패 또는 통신 예외가 발생하면이 두 기능을 사용하여 그 이유에 대한 통찰력을 얻을 수도 있습니다.