> 백엔드 개발 > PHP 튜토리얼 > PHP에서 비동기 cURL 요청을 달성하는 방법은 무엇입니까?

PHP에서 비동기 cURL 요청을 달성하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-03 07:22:02
원래의
566명이 탐색했습니다.

How to Achieve Asynchronous cURL Requests in PHP?

PHP의 비동기 컬 요청

PHP에서는 여러 컬 요청을 동시에 실행하는 것이 어려울 수 있습니다. 이 기사에서는 내장 함수와 외부 라이브러리를 사용하여 비동기 실행을 달성하기 위한 다양한 접근 방식을 살펴보겠습니다.

cURL 멀티스레딩

PHP의 cur_multi_* 함수를 사용하면 여러 cURL 요청의 비동기 실행을 위해. 예는 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<code class="php">curl_multi_init();

$mh = curl_multi_init();

 

$ch1 = curl_init();

curl_setopt($ch1, CURLOPT_URL, 'http://example.com/endpoint');

curl_multi_add_handle($mh, $ch1);

 

$ch2 = curl_init();

curl_setopt($ch2, CURLOPT_URL, 'http://example.com/endpoint2');

curl_multi_add_handle($mh, $ch2);

 

$active = null;

do {

    $mrc = curl_multi_exec($mh, $active);

} while ($mrc == CURLM_CALL_MULTI_PERFORM);

 

while ($active &amp;&amp; $mrc == CURLM_OK) {

    if (curl_multi_select($mh) != -1) {

        do {

            $mrc = curl_multi_exec($mh, $active);

        } while ($mrc == CURLM_CALL_MULTI_PERFORM);

    }

}

 

curl_multi_remove_handle($mh, $ch1);

curl_multi_remove_handle($mh, $ch2);

curl_multi_close($mh);</code>

로그인 후 복사

pthreads

pthreads 라이브러리는 PHP에서 다중 스레드 프로그래밍을 허용합니다. pthread를 사용하면 다음과 같이 비동기식 컬 요청을 달성할 수 있습니다.

1

2

3

4

5

6

7

8

9

10

11

12

<code class="php">class RequestThread extends Thread {

    public function run() {

        $ch = curl_init();

        // ... set cURL options here

 

        curl_exec($ch);

        curl_close($ch);

    }

}

 

$thread = new RequestThread();

$thread->start();</code>

로그인 후 복사

라이브러리를 사용한 병렬 실행

PHP에서 병렬 실행을 위해 특별히 설계된 라이브러리도 있습니다. 병렬 기능 및 병렬 요청으로. 다음은 병렬 요청 라이브러리를 사용하는 예입니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code class="php">use Parallel\{Task, Runtime};

 

$runtime = new Runtime;

 

$tasks = [

    new Task(function () {

        // ... cURL request 1

    }),

    new Task(function () {

        // ... cURL request 2

    }),

];

 

$runtime->run($tasks);</code>

로그인 후 복사

고려 사항

비동기 요청을 실행할 때 서버의 리소스 제한과 잠재적인 병목 현상을 고려하는 것이 중요합니다. 실행 중 발생할 수 있는 오류와 예외를 처리하는 것도 중요합니다.

위 내용은 PHP에서 비동기 cURL 요청을 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿