>백엔드 개발 >PHP 튜토리얼 >PHP에서 비동기 GET 요청을 어떻게 수행할 수 있나요?

PHP에서 비동기 GET 요청을 어떻게 수행할 수 있나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-05 12:50:10835검색

How Can I Perform Asynchronous GET Requests in PHP?

PHP의 비동기 GET 요청: 상세 가이드

소개

비동기 GET 요청 수행 PHP에서는 스크립트가 현재 실행 흐름을 차단하지 않고 원격 서버에 대한 요청을 시작할 수 있습니다. 이는 사용자 상호 작용을 지연시키지 않고 수많은 요청을 보내야 하는 웹 애플리케이션에 매우 유용합니다.

비동기 요청에 file_get_contents() 사용

file_get_contents()는 내장된 동기식 및 비동기식 GET 요청 모두에 활용될 수 있는 PHP 함수. 기본적으로 동기식으로 작동하여 요청이 완료될 때까지 스크립트를 차단합니다. 그러나 선택적 컨텍스트 인수를 제공하면 비동기 작업이 가능합니다.

  • 동기 요청:

    $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 요청을 즉시 시작합니다. , 응답을 기다리지 않고 호출자에게 제어권을 반환합니다. fsockopen()을 사용하려면 file_get_contents()에 비해 더 실제적인 접근 방식이 필요하다는 점에 유의해야 합니다.

위 내용은 PHP에서 비동기 GET 요청을 어떻게 수행할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.