Maison > développement back-end > tutoriel php > Comment puis-je effectuer des requêtes GET asynchrones en PHP ?

Comment puis-je effectuer des requêtes GET asynchrones en PHP ?

Mary-Kate Olsen
Libérer: 2024-12-05 12:50:10
original
831 Les gens l'ont consulté

How Can I Perform Asynchronous GET Requests in PHP?

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;
    Copier après la connexion
  • Demande asynchrone :

    $context = stream_context_create([
      'http' => [
          'ignore_errors' => true
      ]
    ]);
    
    $output = file_get_contents('http://www.example.com/', false, $context);
    Copier après la connexion

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);
    }
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal