Position actuelle: Accueil> Derniers articles> Comment effacer le code d'erreur d'une prise spécifiée à l'aide de socket_clear_error? Analyse des étapes de fonctionnement

Comment effacer le code d'erreur d'une prise spécifiée à l'aide de socket_clear_error? Analyse des étapes de fonctionnement

gitbox 2025-08-30
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie n&#39;a rien à voir avec le texte,Par exemple seulement</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Préparez-vous à démarrer l&#39;affichage du contenu de l&#39;article..."</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-comment"># Comment utiliser socket_clear_error Effacer le code d&#39;erreur de la prise spécifiée?Analyse des étapes de fonctionnement</span></span><span>

exister PHP Dans la programmation réseau,Operation sockets(socket)Je rencontre souvent des codes d&#39;erreur,Ces codes d&#39;erreur aident les développeurs à diagnostiquer les problèmes。`socket_clear_error` Oui PHP </span><span><span class="hljs-number">7.4</span></span><span> Une nouvelle fonction ajoutée à la version ci-dessus,Spécifiquement utilisé pour effacer l&#39;état d&#39;erreur sur les prises spécifiées。本文将详细介绍Comment utiliser `socket_clear_error`,Et vous aider à maîtriser son utilisation par des étapes spécifiques。

</span><span><span class="hljs-comment">## 什么Oui socket_clear_error?</span></span><span>

`socket_clear_error` 函数的作用Oui清除给定套接字上的错误码,Évitez les erreurs précédentes affectant les opérations ultérieures。这exister长连接或多次操作同一套接字时尤为重要。

Le prototype de fonction est le suivant:

```php
</span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">socket_clear_error</span></span><span>(resource </span><span><span class="hljs-variable">$socket</span></span><span>)
</span></span>
  • $ socket : une ressource de socket valide.

  • Valeur de retour: renvoie true si réussi, false en cas d'échec.

Utiliser des scénarios

  • Nettoyez l'état d'erreur avant d'envoyer ou de recevoir des données plusieurs fois.

  • Réinitialisez l'état après avoir manipulé les exceptions des douilles pour assurer des opérations ultérieures lisses.

  • Phase de débogage, utilisée pour confirmer si l'erreur existe toujours.

Analyse des étapes de fonctionnement

1. Créer et connecter des sockets

Tout d'abord, nous devons créer une prise et essayer de nous connecter au serveur cible.

 <span><span><span class="hljs-variable">$socket</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_create</span></span><span>(AF_INET, SOCK_STREAM, SOL_TCP);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$socket</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Impossible de créer une prise: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">socket_strerror</span></span><span>(</span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>()));
}

</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_connect</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-string">"example.com"</span></span><span>, </span><span><span class="hljs-number">80</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Échec de la connexion: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">socket_strerror</span></span><span>(</span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>)) . PHP_EOL;
}
</span></span>

2. Vérifiez l'état d'erreur actuel

Lorsque la connexion échoue, le socket enregistre le code d'erreur. Vous pouvez utiliser socket_last_error pour afficher:

 <span><span><span class="hljs-variable">$errorCode</span></span><span> = </span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Code d&#39;erreur actuel: <span class="hljs-subst">$errorCode</span></span></span><span>" . PHP_EOL;
</span></span>

3. Erreur de prise effacer

Utilisez socket_clear_error pour effacer le code d'erreur pour éviter d'affecter les opérations suivantes:

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">socket_clear_error</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Code d&#39;erreur de socket effacée。"</span></span><span> . PHP_EOL;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Échec de l&#39;effondrement du code d&#39;erreur de socket。"</span></span><span> . PHP_EOL;
}
</span></span>

4. Opérez à nouveau la prise

Après avoir effacé l'erreur, vous pouvez réessayer:

 <span><span><span class="hljs-comment">// Par exemple, envoyer HTTP En-tête de demande</span></span><span>
</span><span><span class="hljs-variable">$request</span></span><span> = </span><span><span class="hljs-string">"GET / HTTP/1.1\r\nHost: example.com\r\nConnection: Close\r\n\r\n"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">socket_write</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>, </span><span><span class="hljs-variable">$request</span></span><span>, </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$request</span></span><span>)) === </span><span><span class="hljs-literal">false</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Échec de l&#39;envoi: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">socket_strerror</span></span><span>(</span><span><span class="hljs-title function_ invoke__">socket_last_error</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>)) . PHP_EOL;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"La demande a été envoyée avec succès。"</span></span><span> . PHP_EOL;
}
</span></span>

5. Fermez la prise

Une fois l'opération terminée, fermez la prise et libérez la ressource:

 <span><span><span class="hljs-title function_ invoke__">socket_close</span></span><span>(</span><span><span class="hljs-variable">$socket</span></span><span>);
</span></span>

Résumer

SOCKET_CLEAR_ERROR est un outil efficace pour nettoyer l'état d'erreur de socket, en particulier dans les communications réseau complexes ou les longues connexions. Grâce aux étapes ci-dessus, vous pouvez nettoyer efficacement les codes d'erreur pour éviter l'accumulation d'erreurs sur le fonctionnement du programme, améliorant ainsi la stabilité et la fiabilité de la communication réseau.

Maître socket_clear_error pour rendre votre programmation PHP Socket plus robuste et efficace.

 <span></span>