ホームページ  >  記事  >  バックエンド開発  >  PHP8.1 リリース: 複数リクエストの同時処理のためのcurlの導入

PHP8.1 リリース: 複数リクエストの同時処理のためのcurlの導入

王林
王林オリジナル
2023-07-08 21:13:381717ブラウズ

PHP8.1 リリース: 複数のリクエストの同時処理のためのcurlの導入

最近、PHPは最新バージョンのPHP8.1を正式にリリースしました。これには、複数のリクエストの同時処理のためのcurlという重要な機能が導入されました。この新機能により、開発者は複数の HTTP リクエストをより効率的かつ柔軟に処理できるようになり、パフォーマンスとユーザー エクスペリエンスが大幅に向上します。

以前のバージョンでは、複数のリクエストを処理するには、多くの場合、複数のcurlリソースを作成し、ループを使用してデータをそれぞれ送受信する必要がありました。この方法でも目標は達成できますが、システム リソースを最大限に活用することができず、開発者のコ​​ーディングも複雑になります。

PHP8.1 では、新しいcurl_multi_* 関数シリーズが導入され、開発者はこの関数シリーズを使用して、複数のリクエストを非同期に送信し、同時に応答を受信することができます。このようにして、応答を待つ間に 1 つのリクエストを送信することができ、リクエストの同時処理が実現されます。

以下、curl_multi_* 関数の使用例を見てみましょう:

$urls = [
    'https://www.example.com/api/1',
    'https://www.example.com/api/2',
    'https://www.example.com/api/3',
    'https://www.example.com/api/4',
];

$resources = [];
$mh = curl_multi_init();

foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_multi_add_handle($mh, $ch);
    $resources[] = $ch;
}

$active = null;
do {
    $status = curl_multi_exec($mh, $active);
    if ($status !== CURLM_CALL_MULTI_PERFORM) {
        curl_multi_select($mh);
    }
} while ($active > 0);

foreach ($resources as $resource) {
    $data = curl_multi_getcontent($resource);
    // 处理响应数据
    echo $data;
    
    curl_multi_remove_handle($mh, $resource);
    curl_close($resource);
}

curl_multi_close($mh);

上の例では、複数の URL を含む配列を作成し、curl_multi リソースと、curl を格納する配列を初期化しました。リソース。次に、foreach ループを使用して URL ごとに新しいcurl リソースを作成し、curl_multi_add_handle 関数を介してそれをcurl_multi リソースに追加します。次に、curl_multi_exec 関数を使用してリクエストを非同期に送信し、curl_multi_select 関数を使用して応答を待ちます。最後に、curl リソース配列を走査し、curl_multi_getcontent 関数を使用して応答データを取得し、処理します。

PHP8.1 では、複数のリクエストを同時に処理するためにcurlを導入することで、複数のリクエストを処理するためのコードが大幅に簡素化され、パフォーマンスが大幅に向上しました。複数の HTTP リクエストを同時に送信する必要があるアプリケーション シナリオ、特に外部 API と通信する場合、この新機能の追加は間違いなく重要なマイルストーンです。

概要:
PHP8.1 のリリースでは、curl の複数リクエストの同時処理という重要な機能が導入され、開発者に複数の HTTP リクエストを処理する効率的かつ柔軟な方法が提供されます。 curl_multi_* 関数シリーズを使用すると、複数のリクエストを非同期に送受信できるため、システムのパフォーマンスとユーザー エクスペリエンスが大幅に向上します。開発者は、同時リクエストをより簡単に処理し、関連コードの作成を簡素化できるようになりました。この新機能は、外部 API と通信するアプリケーションにとって間違いなく重要な進歩です。皆さんも、アプリケーションのパフォーマンスと効果を向上させるために、PHP8.1 のこの新機能をぜひ試してみてください。

以上がPHP8.1 リリース: 複数リクエストの同時処理のためのcurlの導入の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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