我正在编写一个PHP脚本,我希望能够可选使用文件作为脚本输入。通过这种方式:如何检查bash输入是否被重定向到PHP脚本?
$ php script.php < file.txt
我,实际上,能够做到这一点使用file_get_contents
:
$data = file_get_contents('php://stdin');
但是,如果我没有通过文件的输入,脚本挂indefinetelly,等待为输入。
我尝试以下,但它没有工作:
$data = '';
$in = fopen('php://stdin', 'r');
do {
$bytes = fread($in, 4096);
// Maybe the input will be empty here?! But no, it's not :(
if (empty($bytes)) {
break;
}
$data .= $bytes;
} while (!feof($in));
脚本等待fread
返回一个值,但它永远不会返回。我想它会以相同的方式等待一些输入file_get_contents
。
另一个尝试是将do { ... } while
循环替换为while { ... }
,在尝试读取输入之前检查EOF
。但是这也没有奏效。
关于如何实现这一点的任何想法?
@JustOnUnderMillions也许我从PHP客户端问得太多了,但还有其他的非PHP **命令行程序实现了这个逻辑 - 读取输入或忽略/退出。 –
是的,你说得对。我在错误的车道上。 @Alex Howansky注意到它。 – JustOnUnderMillions