>  기사  >  백엔드 개발  >  PHP에서 cURL 요청을 어떻게 비동기식으로 실행할 수 있나요?

PHP에서 cURL 요청을 어떻게 비동기식으로 실행할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 11:16:30409검색

How Can I Execute cURL Requests Asynchronously in PHP?

PHP의 비동기 컬 요청

PHP에서 컬 포스트 요청을 비동기적으로 실행하면 성능이 향상되고 잠재적인 지연을 방지할 수 있습니다. 다양한 방법을 사용하여 이를 달성하는 방법은 다음과 같습니다.

비동기 cURL 함수 사용

curl_multi_*를 사용하면 여러 cURL 요청을 동시에 실행할 수 있습니다. 다음은 예제 코드입니다.

<code class="php">$curl = curl_init($request);
curl_setopt($curl, CURLOPT_URL, $url_onfleet);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_USERPWD, $api_onfleet);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_ENCODING, "");  
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, '{&quot;destination&quot;:{&quot;address&quot;:{&quot;unparsed&quot;:&quot;'.$pickup_address.'&quot;},&quot;notes&quot;:&quot;'.$comments.'&quot;},&quot;recipients&quot;:[{&quot;name&quot;:&quot;'.$name.'&quot;,&quot;phone&quot;:&quot;+61'.$phone.'&quot;,&quot;notes&quot;:&quot;Number of riders: '.$riders.'&quot;}],&quot;completeBefore&quot;:'.$timestamp.',&quot;pickupTask&quot;:&quot;yes&quot;,&quot;autoAssign&quot;:{&quot;mode&quot;:&quot;distance&quot;}}');

$mh = curl_multi_init();
curl_multi_add_handle($mh,$curl);

$active = null;
//execute the handles
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);
    }
}
//close the handles
curl_multi_remove_handle($mh, $curl);
curl_multi_close($mh);</code>

pThreads 사용

pThreads는 PHP용 스레딩 라이브러리입니다. 비동기 컬 요청에 이를 사용하는 방법은 다음과 같습니다.

<code class="php">class Request1 extends Thread {
    public function run() {
        // Execute the first cURL request here
    }
}

class Request2 extends Thread {
    public function run() {
        // Execute the second cURL request here
    }
}

$req1 = new Request1();
$req1->start();
$req2 = new Request2();
$req2->start();</code>

두 방법 모두 컬 요청의 비동기 실행을 허용하여 더 나은 성능과 병렬 작업의 효율적인 처리를 가능하게 합니다.

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

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