首页 > 后端开发 > php教程 > 如何在 PHP 中执行异步 GET 请求?

如何在 PHP 中执行异步 GET 请求?

Mary-Kate Olsen
发布: 2024-12-05 12:50:10
原创
830 人浏览过

How Can I Perform Asynchronous GET Requests in PHP?

PHP 中的异步 GET 请求:详细指南

简介

执行异步 GET 请求PHP 允许您的脚本向远程服务器发起请求,而不会阻塞当前的执行流程。这对于需要发送大量请求而不停止用户交互的 Web 应用程序非常有益。

使用 file_get_contents() 进行异步请求

file_get_contents() 是一个内置的PHP 函数中可用于同步和异步 GET 请求。默认情况下,它同步运行,阻塞脚本直到请求完成。但是,提供可选的上下文参数允许异步操作。

  • 同步请求:

    $output = file_get_contents('http://www.example.com/');
    echo $output;
    登录后复制
  • 异步请求:

    $context = stream_context_create([
      'http' => [
          'ignore_errors' => true
      ]
    ]);
    
    $output = file_get_contents('http://www.example.com/', false, $context);
    登录后复制

使用fsockopen() 用于真正的异步请求

对于甚至不希望 file_get_contents() 的异步行为的情况,fsockopen() 提供了一种较低级别的方法来实现真正的异步。此函数允许直接套接字通信。

  • 使用 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);
    }
    登录后复制

此函数立即触发 GET 请求,无需等待响应,并将控制权返回给调用者。需要注意的是,与 file_get_contents() 相比,使用 fsockopen() 需要更多的实践方法。

以上是如何在 PHP 中执行异步 GET 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板