PHP での非同期curl リクエスト
PHP では、複数のcurl リクエストを同時に実行することが困難になる場合があります。この記事では、組み込み関数と外部ライブラリを使用して非同期実行を実現するためのさまざまなアプローチを検討します。
cURL マルチスレッド
PHP のcurl_multi_* 関数を使用すると、複数の cURL リクエストの非同期実行用。以下に例を示します。
<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 && $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 を使用すると、非同期カール リクエストは次のように実現できます。
<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 には、並列実行用に特別に設計されたライブラリもあります。並列関数と並列リクエストとして。次に、並列リクエスト ライブラリを使用する例を示します。
<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 中国語 Web サイトの他の関連記事を参照してください。