サンプルコードは次のとおりです。
<?php
$fp = fsockopen($host, $port, $errno, $errstr, $connectTimeout);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
echo "connected\n";
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
stream_set_timeout($fp, 5);
とを見
socket_set_option($fp, SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0));
たことがありますが、読み取りがタイムアウトすることはありません。
の PHP ドキュメントでいくつかの警告を見てきましたstream_set_timeout()
。
この関数は、stream_socket_recvfrom() のような高度な操作では機能しません。代わりに、timeout パラメータを指定して stream_select() を使用してください。
select()
or ループは使用したくありません。タイムアウトでブロッキング読み取りを行う標準的な方法は何ですか?