a-blog cms PHP API Reference

CurlHttpClient
in package
implements HttpClientInterface

Table of Contents

Interfaces

HttpClientInterface

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
string

resolveHost()

ホスト名を名前解決し、実際に接続する単一の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
Return values
string

        
On this page

Search results