CurlHttpClient
in package
implements
HttpClientInterface
Table of Contents
Interfaces
Constants
- CONNECT_TIMEOUT_SECONDS = 5
- 接続確立までのタイムアウト(秒)。
- MAX_RESPONSE_BODY_SIZE = 65536
- レスポンスボディの読み取り上限(バイト)。DoS・ディスク圧迫防止のため一定サイズを超えたら切り詰める。
- TOTAL_TIMEOUT_SECONDS = 10
- リクエスト全体のタイムアウト(秒)。応答のない宛先で処理が滞留し続けないようにする。
Methods
- request() : array{status: int, responseHeader: string, responseBody: string, responseTime: float}
- buildResolveEntry() : string
- CURLOPT_RESOLVE に渡す "HOST:PORT:ADDRESS" 形式の文字列を組み立てる。 curl は IPv6 アドレスを角括弧で囲んだ形式([2001:db8::1])で受け取るため、 IPv4 と IPv6 で表記を切り替える。
- resolveHost() : string
- ホスト名を名前解決し、実際に接続する単一のIPアドレスを確定する。
Constants
CONNECT_TIMEOUT_SECONDS
接続確立までのタイムアウト(秒)。
private
mixed
CONNECT_TIMEOUT_SECONDS
= 5
MAX_RESPONSE_BODY_SIZE
レスポンスボディの読み取り上限(バイト)。DoS・ディスク圧迫防止のため一定サイズを超えたら切り詰める。
private
mixed
MAX_RESPONSE_BODY_SIZE
= 65536
TOTAL_TIMEOUT_SECONDS
リクエスト全体のタイムアウト(秒)。応答のない宛先で処理が滞留し続けないようにする。
private
mixed
TOTAL_TIMEOUT_SECONDS
= 10
Methods
request()
public
request(string $url, string $method, array<string|int, mixed> $headers, string $body) : array{status: int, responseHeader: string, responseBody: string, responseTime: float}
Parameters
- $url : string
- $method : string
- $headers : array<string|int, mixed>
- $body : string
Return values
array{status: int, responseHeader: string, responseBody: string, responseTime: float}buildResolveEntry()
CURLOPT_RESOLVE に渡す "HOST:PORT:ADDRESS" 形式の文字列を組み立てる。 curl は IPv6 アドレスを角括弧で囲んだ形式([2001:db8::1])で受け取るため、 IPv4 と IPv6 で表記を切り替える。
private
buildResolveEntry(string $host, int $port, string $ip) : string
Parameters
- $host : string
- $port : int
- $ip : string
Return values
stringresolveHost()
ホスト名を名前解決し、実際に接続する単一のIPアドレスを確定する。
private
resolveHost(string $host) : string
まず hosts ファイルを含むシステムのリゾルバ(gethostbynamel())で引き、IPv4 が無いときだけ dns_get_record() で AAAA を引く(IPv6 専用のエンドポイント向け)。
Why not dns_get_record() を先に引かないか: dns_get_record() は DNS サーバーへ直接問い合わせ /etc/hosts を参照しないため、hosts でだけ定義した社内ホストは解決できず、DNS と hosts で 答えが違う名前では curl(getaddrinfo)が本来つなぐ先と別の IP へ固定してしまう。
Parameters
- $host : string