ソケットコンテキストオプション
ソケットコンテキストオプション一覧
説明
ここでは、ソケット越しに動作するラッパー
すなわち tcp
、http
あるいは ftp
でサポートされるオプションを扱います。
オプション
bindto
-
PHP がネットワークにアクセスする際の IP アドレス
(IPv4 あるいは IPv6 のどちらか)やポート番号を指定する際に使用されます。
書式は、IPv4 アドレスの場合は ip:port
、
IPv6 アドレスの場合は [ip]:port
です。
IP やポート番号に
0
を指定すると、それをシステムに自動的に設定させる
ことができます。
注意:
FTP の通常の操作では 2 つのソケット接続を使用するので、
このオプションでポート番号を指定することができません。
backlog
-
ソケットのリスンキューから出て行く接続の数を制限します。
注意:
stream_socket_server でのみ有効です。
ipv6_v6only
-
IPv4射影アドレスに関する OS のデフォルトを上書きする
注意:
これは、[::]
に バインドされたアドレスが存在するときに、
IPv4 アドレス で listen しようとする場合に特に重要です。
上で、
stream_socket_server でのみ有効です。
so_reuseport
-
異なるプロセスからであっても、同じ IPアドレス:ポート のペアに 複数 bind することを許可します。
注意:
stream_socket_server でのみ有効です。
so_broadcast
-
ブロードキャストアドレスへのデータの送信や、
ブロードキャストアドレスからのデータの受信を有効にします。
注意:
stream_socket_server でのみ有効です。
tcp_nodelay
-
このオプションを true
にすると、
SOL_TCP,NO_DELAY=1
をそれぞれ設定します。
これによって、TCP の Nagle アルゴリズムを無効にします。
例
例1 基本的な bindto
の使用例
<?php
// IP アドレス '192.168.0.100' でインターネットに接続する
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:0',
),
);
// IP アドレス '192.168.0.100' とポート番号 '7000' でインターネットに接続する
$opts = array(
'socket' => array(
'bindto' => '192.168.0.100:7000',
),
);
// IPv6 アドレス '2001:db8::1' とポート番号 '7000' でインターネットに接続する
$opts = array(
'socket' => array(
'bindto' => '[2001:db8::1]:7000',
),
);
// ポート番号 '7000' でインターネットに接続する
$opts = array(
'socket' => array(
'bindto' => '0:7000',
),
);
// コンテキストを作成し…
$context = stream_context_create($opts);
// …そしてデータを取得するためにそれを使用する
echo file_get_contents('http://www.example.com', false, $context);
?>