function getStdin()
{
$ret = "";
$fp = fopen("php://stdin", "r");
if (is_resource($fp))
{
$cnt = 0;
stream_set_blocking($fp, 0);
do
{
$buf = fread($fp, 512);
if ($buf === "")
{
$cnt++;
if ($cnt > 15)
{
break;
}
}
else
{
$cnt = 0;
$ret .= $buf;
}
}
while (1);
fclose($fp);
}
return $ret;
}
手前のコマンドがゆっくり出力される場合、失敗します。
$ for i in $(seq 1 3); do echo $i; sleep 1; done 1 2 3 $ for i in $(seq 1 3); do echo $i; sleep 1; done | php wagnek.php 2| Basic Latin | 1| 1 1| Control Code...| 1| \n
必ず標準入力が有る場合 stream_set_blocking($fp, 0); をコメントアウトすると良いです。
0 件のコメント:
コメントを投稿