Das Fehlermanagement ist ein wichtiger Bestandteil des Debuggens und Wartung von Netzwerkkommunikationsprogrammen beim Programmieren mit PHP. SOCKKET_LAST_ERROR () und SOCKKET_CLEAR_ERROR () sind zwei Funktionen, die von PHP für die Fehlerbehandlung bereitgestellt werden. Sie können Entwicklern helfen, die neuesten Socket -Fehlerinformationen zu löschen. In diesem Artikel wird ausführlich erläutert, wie diese beiden Funktionen verwendet werden und ein Beispiel verwendet werden, um zu demonstrieren, wie Fehlercodes filtern und Fehlerinformationen löschen.
Socket_Last_error () wird verwendet, um den Fehlercode des letzten Socket -Vorgangs zurückzugeben. Sein Prototyp ist wie folgt:
int socket_last_error ([ resource $socket ] )
Der Parameter $ Socket ist optional. Wenn eine bestimmte Socket -Ressource an übergeben wird, wird der Fehlercode des Socket zurückgegeben. Wenn es nicht übergeben wird, wird der Fehlercode, der der Standard aufgetreten ist, zurückgegeben.
Der Rückgabewert ist eine Ganzzahl, die den Fehlercode angibt.
Socket_Clear_error () wird verwendet, um den neuesten Socket -Fehlerrekord zu löschen. Der Prototyp ist wie folgt:
void socket_clear_error ([ resource $socket ] )
Der Parameter $ Socket ist ebenfalls optional. Wenn nicht bestanden, löschen Sie den globalen Socket -Fehler. Wenn eine bestimmte Socket -Ressource übergeben wird, löschen Sie den Fehleraufzeichnung der Ressource.
Das Folgende ist ein einfaches Beispiel für TCP -Clientverbindungen, das zeigt, wie diese beiden Funktionen zum Erfassen, Filtern und Löschen von Fehlern verwendet werden.
<?php
// Erstellen a TCP socket
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// Illegal eine Adresse herstellen, die nicht existiert,Auslöser Fehler
$host = 'm66.net';
$port = 9999; // Angenommen, dieser Port hat keinen Service -Zuhören
@socket_connect($socket, $host, $port);
// Holen Sie sich den Fehlercode
$errorCode = socket_last_error($socket);
if ($errorCode !== 0) {
// Fehlermeldung abrufen
$errorMessage = socket_strerror($errorCode);
echo "Verbindung ist fehlgeschlagen,Fehlercode: $errorCode,Fehlermeldung: $errorMessage\n";
// 根据Fehlercode进行逻辑判断
if ($errorCode === 111 || $errorCode === 10061) {
echo "Der Zielhost weigert sich zu verbinden,prüfen m66.net:$port Ob Sie den Service aktivieren sollen。\n";
} elseif ($errorCode === 110 || $errorCode === 10060) {
echo "Verbindungszeitüberschreitung,Bitte bestätigen Sie m66.net Ist es zugänglich。\n";
}
// Löschen Sie den Fehlerstatus
socket_clear_error($socket);
}
// Programmlogik fortsetzen...
socket_close($socket);
?>
Im obigen Code:
Verwenden Sie @socket_connect , um die Standardwarnmeldung zu unterdrücken.
Holen Sie sich den spezifischen Fehlercode über Socket_Last_Error () ;
Verwenden Sie Socket_Strerror () , um Fehlercodes in menschenlesbare Zeichenfolgen umzuwandeln.
Verwenden Sie den Fehlercode, um festzustellen, ob die Verbindung abgelehnt, zeitlich oder andere Probleme abgelehnt wird.
Verwenden Sie schließlich Socket_Clear_Error () , um den Fehler zu löschen, um nachfolgende Fehleinschätzungen zu vermeiden.
Fehlercode | Bedeutung |
---|---|
111 | Verbindung abgelehnt (Linux) |
110 | Verbindungszeitpunkt (Linux) |
10061 | Verbindung abgelehnt (Windows) |
10060 | Verbindungszeitpunkt (Windows) |