ホームページ  >  記事  >  バックエンド開発  >  PHP で cURL リクエストを非同期に実行するにはどうすればよいですか?

PHP で cURL リクエストを非同期に実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 11:16:30359ブラウズ

How Can I Execute cURL Requests Asynchronously in PHP?

PHP での非同期 Curl リクエスト

PHP で Curl Post リクエストを非同期に実行すると、パフォーマンスが向上し、潜在的な遅延を防ぐことができます。さまざまな方法を使用してこれを実現する方法は次のとおりです。

非同期 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>

どちらの方法でも、curl リクエストの非同期実行が可能になり、パフォーマンスが向上し、並列タスクを効率的に処理できるようになります。

以上がPHP で cURL リクエストを非同期に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。