Requêtes HTTP asynchrones en PHP
Dans certaines situations, il peut être nécessaire d'initier des requêtes HTTP sans attendre la réponse du serveur. Cette approche est particulièrement utile pour déclencher des événements ou des processus asynchrones au sein d'une application.
La technique suivante vous permet de faire des requêtes HTTP en PHP sans bloquer l'exécution de votre code :
Utiliser fsockopen
La fonction fsockopen de PHP peut être utilisée pour établir une connexion socket avec un serveur distant. Une fois connectées, les données peuvent être envoyées au serveur en utilisant fwrite. Cependant, au lieu d'attendre une réponse, la connexion peut être fermée immédiatement, laissant la requête se terminer de manière asynchrone.
Voici un exemple de fonction qui exécute une requête HTTP POST asynchrone :
function post_without_wait($url, $params) { // Convert parameters to a string $post_string = http_build_query($params); // Parse the URL $parts = parse_url($url); // Open a socket connection $fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30); // Construct and send the HTTP request $request = "POST " . $parts['path'] . " HTTP/1.1\r\n"; $request .= "Host: " . $parts['host'] . "\r\n"; $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Content-Length: " . strlen($post_string) . "\r\n"; $request .= "Connection: Close\r\n\r\n"; if (isset($post_string)) { $request .= $post_string; } fwrite($fp, $request); // Close the socket connection fclose($fp); }
Cette fonction peut être utilisée pour déclencher des requêtes HTTP sans attendre la réponse du serveur. Gardez à l'esprit que la réponse du serveur ne sera pas disponible dans votre application, il est donc essentiel de ne pas vous y fier pour tout traitement ultérieur.
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!