ホームページ  >  記事  >  バックエンド開発  >  PHP 関数の紹介—curl_multi_init(): 複数の cURL セッションを初期化する

PHP 関数の紹介—curl_multi_init(): 複数の cURL セッションを初期化する

王林
王林オリジナル
2023-07-24 12:40:47986ブラウズ

PHP 関数の概要—curl_multi_init(): 複数の cURL でセッションを初期化する

はじめに:
PHP では、curl_multi_init() 関数を使用して、複数の cURL でセッションを初期化します。同時に複数の URL リクエスト。この関数は、新しいcurl_multiハンドルを作成し、リソースハンドルを返します。このセッションでは、複数の cURL ハンドルを追加して実行し、複数の URL を同時に処理するという目的を達成できます。

構文:
resourcecurl_multi_init(void)

戻り値:
成功した場合はセッション ハンドルを返し、失敗した場合は FALSE を返します。

コード例:
次は、curl_multi_init() 関数を使用して複数の cURL セッションを初期化し、2 つの URL リクエストを同時に処理する方法を示す簡単なコード例です。

<?php
// 初始化会话
$mh = curl_multi_init();

// 创建URL列表
$urls = array(
    'http://www.example.com/url1',
    'http://www.example.com/url2'
);

// 创建cURL句柄并添加到会话
$handles = array();
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $handles[] = $ch;
}

// 执行会话中的cURL句柄
$active = null;
do {
    $result = curl_multi_exec($mh, $active);
} while ($result == CURLM_CALL_MULTI_PERFORM || $active);

// 处理结果
foreach ($handles as $handle) {
    $response = curl_multi_getcontent($handle);
    // 处理响应数据
    echo $response;
    
    // 移除句柄和关闭cURL
    curl_multi_remove_handle($mh, $handle);
    curl_close($handle);
}

// 关闭会话
curl_multi_close($mh);
?>

分析:
上記のコード例では、最初にcurl_multi_init()関数を使用してセッションが初期化され、次にURLリストが作成されます。次に、foreach ループを使用して URL リストを走査し、curl_init() 関数を使用して複数の cURL ハンドルを作成します。 CURLOPT_RETURTRANSFER オプションは、応答データが返されるように設定されています。次に、curl_multi_add_handle() 関数を使用して各ハンドルをセッションに追加し、ハンドルを $handles 配列に保存します。

その後、curl_multi_exec() 関数を使用して、セッション内のすべてのハンドルを同時に実行します。戻り値 $result とアクティブ ハンドルの数 $active を取得し、do-while ループで実行を続行する必要があるかどうかを判断します。

ループ終了後、curl_multi_getcontent() 関数を使用して各ハンドルの応答データを取得し、処理します。次に、curl_multi_remove_handle() 関数を使用してセッションからハンドルを削除し、curl_close() 関数を使用して各 cURL ハンドルを閉じます。

最後に、curl_multi_close() 関数を使用してセッションを閉じます。

概要:
curl_multi_init() 関数を使用すると、複数の cURL セッションを簡単に初期化し、複数の URL リクエストを同時に処理する機能を実装できます。これは、複数の API をリクエストしたり、複数のファイルを同時にダウンロードする必要がある場合に便利です。 curl_multi_init() 関数を使用すると、プログラムの効率と応答速度が向上します。

したがって、curl_multi_init() 関数とその他の関連する cURL 関数を学習して習得すると、PHP のネットワーク リクエスト関数をより深く理解し、応用できるようになります。

以上がPHP 関数の紹介—curl_multi_init(): 複数の cURL セッションを初期化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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