"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP에서 cURL 요청을 어떻게 비동기식으로 실행할 수 있나요?

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

2024-11-08에 게시됨
검색:222

How Can I Execute cURL Requests Asynchronously in PHP?

PHP의 비동기 컬 요청

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

비동기 cURL 함수 사용

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

$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, '{"destination":{"address":{"unparsed":"'.$pickup_address.'"},"notes":"'.$comments.'"},"recipients":[{"name":"'.$name.'","phone":" 61'.$phone.'","notes":"Number of riders: '.$riders.'"}],"completeBefore":'.$timestamp.',"pickupTask":"yes","autoAssign":{"mode":"distance"}}');

$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 && $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);

pThreads 사용

pThreads는 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();

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3