curl_multi_setopt

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

curl_multi_setoptcURL マルチハンドル用のオプションを設定する

説明

curl_multi_setopt ( CurlMultiHandle $multi_handle , int $option , mixed $value ) : bool

警告

この関数は、 現在のところ詳細な情報はありません。引数のリストのみが 記述されています。

パラメータ

multi_handle

option

CURLMOPT_* 定数のいずれか。

value

option に設定する値。

value には int 型の値を指定しなければいけません。 option パラメータの値によって、それぞれ次のようになります。

オプション value の設定値
CURLMOPT_PIPELINING 1 を渡せば有効に、そして 0 を渡せば無効になります。 マルチハンドルでのパイプライン化を有効にすると、このハンドルによる転送で、 可能な限り HTTP パイプライン化を試みます。 つまり、二番目のリクエストを追加したときに既存の接続が使える場合は、 既存の接続に「パイプ」でつなぎます。 cURL 7.43.0 以降では、この値はビットマスクですが、 2 を渡すと、既存の HTTP/2 接続上での新しい転送で、 可能な限り多重化を試みます。 3 を渡すと、パイプライン化と多重化を互いに独立して行うよう cURL に指示します。 cURL 7.62.0 以降は、パイプライン化のbitを設定しても効果はありません。
CURLMOPT_MAXCONNECTS 同時に開く接続の最大数を指定します。これを libcurl がキャッシュします。 デフォルトのサイズは、 curl_multi_add_handle() で追加したハンドル数の四倍に収まるように拡大されます。 キャッシュがいっぱいになると、キャッシュ内で一番古い接続を閉じ、 開いている接続の数が増えないようにします。
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE パイプライン化のチャンク長の閾値をバイト単位で指定します。
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE パイプライン化のペナルティの閾値をバイト単位で指定します。
CURLMOPT_MAX_HOST_CONNECTIONS 単一のホストへの最大接続数を指定します。
CURLMOPT_MAX_PIPELINE_LENGTH 単一のパイプライン内での最大リクエスト数を指定します。
CURLMOPT_MAX_TOTAL_CONNECTIONS 同時にオープンする接続の最大数を指定します。
CURLMOPT_PUSHFUNCTION サーバープッシュを扱うために登録される callable を渡し、以下のようなシグナチャをとります:
pushfunction ( resource $parent_ch , resource $pushed_ch , array $headers ) : int
parent_ch

親となる cURL ハンドル(クライアントが作成したリクエストの)

pushed_ch

プッシュされたリクエストのための、新しい cURL ハンドル

headers

プッシュのためのプロミスヘッダ

プッシュ関数自体は、プッシュをハンドルできる場合は CURL_PUSH_OK を返し、 拒否する場合は、CURL_PUSH_DENY を返すことが想定されています。

返り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.0.0 multi_handleCurlMultiHandle クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、resource を期待していました。
7.1.0 CURLMOPT_PUSHFUNCTION が追加されました。
7.0.7 CURLMOPT_CHUNK_LENGTH_PENALTY_SIZECURLMOPT_CONTENT_LENGTH_PENALTY_SIZECURLMOPT_MAX_HOST_CONNECTIONSCURLMOPT_MAX_PIPELINE_LENGTHCURLMOPT_MAX_TOTAL_CONNECTIONS が追加されました。

add a note add a note

User Contributed Notes 1 note

up
1
ryosuke_i_628 at yahoo dot co dot jp
4 years ago
If you want to enable both HTTP/1.1 pipelining and HTTP/2 multiplexing...

<?php
curl_multi_setopt
($mh, CURLMOPT_PIPELINING, 3);
?>

or

<?php
curl_multi_setopt
($mh, CURLMOPT_PIPELINING, CURLPIPE_HTTP1 | CURLPIPE_MULTIPLEX);
?>
To Top