ホームページ >バックエンド開発 >PHPチュートリアル >PHP で並列 cURL リクエストを実行して複数の URL から効率的にデータを取得するにはどうすればよいですか?

PHP で並列 cURL リクエストを実行して複数の URL から効率的にデータを取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-16 22:41:03568ブラウズ

How Can I Execute Parallel cURL Requests to Retrieve Data from Multiple URLs Efficiently in PHP?

PHP: 並列 cURL リクエストを実行する方法

複数の URL からデータを効率的に取得する必要がある状況に対処する場合、並列 cURL リクエスト必需品になります。このコンテキストで、file_get_contents($url) を使用して 15 の異なる URL から JSON データを取得するシナリオを考えてみましょう。

単純なループを使用して連続リクエストを行う現在のアプローチでは、次のような理由により大幅な速度低下が発生する可能性があります。 file_get_contents の同期的な性質。これは、スクリプトが次のリクエストに進む前に、各リクエストが完了するまで待機する必要があることを意味します。

この問題を解決するには、マルチ cURL リクエストを活用できます。これを実現する方法は次のとおりです。

$nodes = array($url1, $url2, $url3);
$node_count = count($nodes);

$curl_arr = array();
$master = curl_multi_init();

for ($i = 0; $i < $node_count; $i++) {
    $url = $nodes[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($master, $curl_arr[$i]);
}

do {
    curl_multi_exec($master, $running);
} while ($running > 0);

for ($i = 0; $i < $node_count; $i++) {
    $results[] = curl_multi_getcontent($curl_arr[$i]);
}

print_r($results);

このスクリプトはマルチカール コンテキストを作成し、各 URL を個別の簡単なハンドルとしてコンテキストに追加します。次に、ループを使用してすべての簡易ハンドルを反復処理し、それらを同時に実行して結果を収集します。最後に、すべての URL から取得したコンテンツを出力します。

並列 cURL リクエストを使用すると、スクリプトのパフォーマンスが大幅に向上し、複数の URL からデータを取得するのに必要な時間を短縮できます。

以上がPHP で並列 cURL リクエストを実行して複数の URL から効率的にデータを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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