閑古鳥 -> 呟き -> socket_set_option にてタイムアウトまでの時間を設定する
socket_set_option とは、ソケットでデータをやり取りする時の設定をするための関数で、基本的にはマニュアルの引数リストの通りに設定したい項目 (optname) に値を入れてやればいいのですが、 mixed 、とある通り値が複数の場合があり、ここでいうタイムアウトの設定も、その例に入るものです。
まず送信時でのタイムアウトの設定は、 optname に SO_SNDTIMEO を、 受信時には SO_RCVTIMEO 定数を指定します。その後の引数で渡す値は、連想配列になります。
連想配列のキーは、 sec と usec で、 sec に必要な値を代入した後、その変数を引数として渡してください。
$sec = Array("sec" => 5);
$s = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($s, SOL_SOCKET, SO_SNDTIMEO, $sec);
socket_set_option($s, SOL_SOCKET, SO_RCVTIMEO, $sec);
/* 略 */
他のオプションについてはあまり調べていないのでわかりませんが、マニュアルが整うまでは、 socket_get_option 関数を用いてデフォルトの値を調べた上で使用するのが良いと思います。
またマニュアルにもある通り、この関数の仕様や名前はいつ変更されるかわからないものなので、この文書が常に有効である保証がないことは、ご了承くださいませ。