ホームページ >バックエンド開発 >PHPチュートリアル >curl_multi_init を使用して同時リクエストを実行する_PHP チュートリアル

curl_multi_init を使用して同時リクエストを実行する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:58:441315ブラウズ

PHP 言語には JavaScript のような非同期コールバックの機能がないため、同時実行性を実現するのは少し難しいです。ただし、サーバー間の接続と通信に関しては、PHP は libcurl ライブラリを適切にサポートしており、同時リクエストのバッチを実行するために、curl_multi_init メソッドを簡単に利用できます。

通常、単純な CURL リクエストは次のように組み立てられて送信されます:

$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $url); $ch, CURLOPT_TIMEOUT, 10);
$data =curl_exec($ch);
curl_close($ch);
curl_exec が実行されると、必要な応答結果である $data 変数をキャプチャできます。

curl_multi_exec への切り替えも同様に機能し、ネイティブ PHP では CURL ハンドルのバッチ処理を並行して実行できます。では、同時 CURL ハンドルのバッチを実装するにはどうすればよいでしょうか? CURL バッチ セッションを確立することで、2 つの独立した CURL ハンドルを制御できます。セッションを実行する必要がある場合、スタック上のハンドルはcurl_multi_execを通じて処理されます。関数にカプセル化すると、基本的には次のようになります。 i = 0; $count; $i++) {
$query_string = $query_arr[$i] = Curl_init($ch_arr[$i], CURLOPT_RETURNTRANSFER , true);
curl_multi_add_handle($ch, $ch_arr[$i]);
$running = null;
curl_multi_exec($running > 0); ;
for ($i = 0; $i $results[$i] =curl_multi_getcontent($ch_arr[$i]); ) ;
}
curl_multi_close($ch);
$results;
返される最終データは、個々の CURL ハンドル応答で構成される結果セット配列です。個別のリクエストに比べて、基本的に半分の時間を節約できます。




http://www.bkjia.com/PHPjc/363787.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/363787.html

技術記事

PHP 言語には JavaScript のような非同期コールバックの機能がないため、同時実行性を実現するのは少し難しいです。ただし、サーバー間の接続と通信に関しては、PHP は libcurl ライブラリを適切にサポートしています...

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