2016-08-31 3 views
1

は、あなたがこのlibcurlのパイプライン - マルチを実行しながら、新しいURLを追加するには、

curl_easy_setopt(pCurl, CURLOPT_URL, url); 
curl_multi_add_handle(pCurlMulti, pCurl); 
curl_multi_perform(...) 

//待っ //ながら、今、我々は呼び出すことができ、サーバからの応答を待っている

を持っていると言う進行中です
curl_easy_setopt(pCurl, CURLOPT_URL, newUrl); 

//なしcurl_multi_remove_handle & curl_multi_add_handle?

答えて

1

いいえ、アクティブな転送のURLは変更しません。代わりに、enable pipelining on the multi handleを入力して、転送ごとに簡単なハンドルを1つ追加します。可能であれば、マルチハンドルは同じ接続上で要求をパイプライン処理します。

+0

ご回答いただきありがとうございます。だから、私は新しいリクエストをキューに入れなければならない場合、前のリクエストがまだ保留中である場合、新しいURLで新しい簡単なハンドルを作成し、マルチに追加しますか?それを行うための最善の方法ですか? – user5266221

+0

はい。サーバーがパイプライン処理をサポートしている場合(マルチハンドルのオプションを有効にしている場合)、自動的に同じ接続が共有されます。 –

+0

ただし、両端でHTTP/2を実行できる場合は、同じオプションを使用して多重化を行うように要求することができます。その後の転送はすぐに開始して並列処理できます。 –