Requêtes GET asynchrones en PHP : un guide détaillé
Introduction
Effectuer des requêtes GET asynchrones en PHP permet à votre script d'initier une requête vers un serveur distant sans bloquer le flux d'exécution en cours. Ceci est très bénéfique pour les applications Web qui doivent envoyer de nombreuses requêtes sans bloquer les interactions des utilisateurs.
Utilisation de file_get_contents() pour les requêtes asynchrones
file_get_contents() est un outil intégré en fonction PHP qui peut être utilisée pour les requêtes GET synchrones et asynchrones. Par défaut, il se comporte de manière synchrone, bloquant le script jusqu'à ce que la requête soit terminée. Cependant, la fourniture d'un argument de contexte facultatif permet un fonctionnement asynchrone.
Demande synchrone :
$output = file_get_contents('http://www.example.com/'); echo $output;
Demande asynchrone :
$context = stream_context_create([ 'http' => [ 'ignore_errors' => true ] ]); $output = file_get_contents('http://www.example.com/', false, $context);
Utilisation de fsockopen() pour vraiment asynchrone Requêtes
Pour les situations où même le comportement asynchrone de file_get_contents() n'est pas souhaitable, fsockopen() propose une approche de niveau inférieur pour obtenir une véritable asynchronicité. Cette fonction permet une communication directe par socket.
Requête asynchrone utilisant fsockopen() :
function curl_post_async($url) { // 1. Parse URL $parts = parse_url($url); // 2. Open Socket $fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30); // 3. Construct Request $out = "GET " . $parts['path'] . " HTTP/1.1\r\n"; $out .= "Host: " . $parts['host'] . "\r\n"; $out .= "Connection: Close\r\n\r\n"; // 4. Send Request and Close Socket fwrite($fp, $out); fclose($fp); }
Cette fonction déclenche immédiatement la requête GET. , sans attendre de réponse, et rend le contrôle à l'appelant. Il est essentiel de noter que l'utilisation de fsockopen() nécessite une approche plus pratique que file_get_contents().
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!