Position actuelle: Accueil> Derniers articles> Effacer l'erreur après l'impression du journal d'erreur détaillé avec socket_streror ()

Effacer l'erreur après l'impression du journal d'erreur détaillé avec socket_streror ()

M66 2025-05-29

La gestion des erreurs est un lien très important mais souvent négligé lors de la programmation des prises utilisant PHP. Si vous effectuez des connexions réseau, une transmission de données, etc., les messages d'erreur peuvent vous aider à localiser rapidement les problèmes. PHP fournit deux fonctions clés: socket_clear_error () et socket_streror () pour gérer et imprimer des messages d'erreur de socket.

1. Concepts de base

  • socket_streror () : Cette fonction reçoit un code d'erreur (généralement obtenu via socket_last_error () ) et renvoie la chaîne de message d'erreur correspondante.

  • socket_clear_error () : utilisé pour effacer les informations d'erreur de la prise actuelle ou globalement pour empêcher les anciennes erreurs d'affecter les jugements ultérieurs.

Ces deux fonctions peuvent être utilisées conjointement avec les développeurs aidant à effacer les journaux d'erreur traités tout en les enregistrant, fournissant un environnement propre pour les opérations ultérieures.

2. Utilisez des exemples

Examinons un scénario d'utilisation typique: essayez de vous connecter à une adresse de serveur qui n'existe pas et assisse à une erreur.

 <?php

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!$socket) {
    die("Socket La création a échoué: " . socket_strerror(socket_last_error()) . "\n");
}

$host = 'm66.net'; // Exemple de nom de domaine
$port = 12345;

$result = @socket_connect($socket, $host, $port);
if (!$result) {
    $errorCode = socket_last_error($socket);
    $errorMsg = socket_strerror($errorCode);

    // Journal d&#39;impression
    error_log("Échec de la connexion [{$errorCode}]: {$errorMsg}");

    // Effacer l&#39;erreur
    socket_clear_error($socket);
}

socket_close($socket);

Dans le code ci-dessus:

  1. Utilisez @socket_connect pour supprimer le message d'erreur par défaut;

  2. Utilisez socket_last_error () pour obtenir le code d'erreur;

  3. Appelez Socket_Sistror () pour obtenir des informations d'erreur lisibles;

  4. Utilisez error_log () pour imprimer le journal;

  5. Enfin, utilisez socket_clear_error () pour effacer l'erreur pour empêcher les erreurs résiduelles d'affecter le traitement ultérieur.

3. Choses à noter

  • Si vous ne transmettez pas les paramètres de socket à socket_last_error () ou socket_clear_error () , ils agiront sur la dernière erreur de socket (niveau global).

  • La compensation de l'erreur ne réinitialise pas l'état de la douille et la prise doit toujours être fermée et recréée en cas d'erreur mortelle.

  • Les journaux de journalisation suggèrent que les codes d'erreur sont inclus afin que les développeurs puissent trouver des significations spécifiques dans différents environnements.

4. Utilisations courantes

  • Développement du serveur : enregistrez la raison lorsque le serveur écoute la connexion client échoue;

  • Script d'automatisation : le mécanisme de réessayer repose sur des codes d'erreur clairs après une défaillance de la tâche du réseau;

  • Outils de débogage : la visualisation des journaux d'erreur pendant le développement améliore l'efficacité du positionnement.

5. Résumé

Dans la programmation réseau, la qualité du mécanisme de gestion des erreurs détermine souvent la maintenabilité du projet. Obtenez des informations d'erreur clairs via socket_streror () , puis utilisez socket_clear_error () pour effacer les résidus d'environnement, ce qui peut aider les développeurs à écrire des programmes PHP plus robustes et plus faciles à déboguer. La prochaine fois que vous rencontrerez une défaillance de connexion ou une exception de communication, vous pourriez aussi bien utiliser ces deux fonctions pour mieux comprendre les raisons derrière.