Maison > Article > développement back-end > Comment gérer le délai d'expiration de l'interface PHP
Généralement, nous accédons à HTTP de plusieurs manières, principalement : curl, socket, file_get_contents() et d'autres méthodes.
Si le serveur de l'autre partie ne répond jamais, nous serons dans une tragédie. Il est facile de tuer tout le serveur, nous devons donc également prendre en compte le problème du délai d'attente lors de l'accès à http.
[CURL access HTTP]
CURL est une bibliothèque lib couramment utilisée que nous utilisons couramment pour accéder à l'interface du protocole HTTP. , hautes performances et certaines fonctions de prise en charge de la concurrence. (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
Utilisons l'extension cURL pour gérer le contrôle des délais d'attente
Si vous souhaitez un traitement plus précis Pour le délai d'attente, utilisez l'extension cURL, qui peut définir le délai d'expiration de connexion et le délai d'expiration de lecture (CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT).
Si vous souhaitez contrôler que l'interface HTTP doit renvoyer au niveau de la milliseconde, vous pouvez également utiliser les constantes CURLOPT_TIMEOUT_MS et CURLOPT_CONNECTTIMEOUT_M.
Notez que si vous utilisez ces deux constantes, vous devez définir curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
La magie est là, le cURL le mécanisme d'extension est très En particulier, autant de données obtenues à l'heure de lecture spécifiée sont renvoyées, puis l'appel est terminé et le programme ne signale pas d'erreur
Regardez-le à travers le code :
function e_curl() { global $url; $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOSIGNAL, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); $response = curl_exec($ch); if ($response === false) { $info = curl_getinfo($ch); if ($info['http_code'] === 0) { return false; } } return true;}e_curl();
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!