我正在編寫一個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