如何在php中处理stdin到stdout?

bri*_*ice 4 php stdin stdout

我正在尝试编写一个简单的PHP脚本来接收数据stdin,处理它,然后将其写入stdout.我知道PHP可能不是这类东西的最佳语言,但我需要现有的功能.

我试过了

<?php
$file = file_get_contents("php://stdin", "r");
echo $file;
?>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我这样调用它:echo -e "\ndata\n" | php script.php | cat.并没有得到任何错误消息.我正在尝试构建的脚本实际上将成为更大管道的一部分.

关于为什么这不起作用的任何线索?

PS:我对PHP不是很有经验.

tyl*_*mac 6

如果你是管道,你需要缓冲输入,而不是一次处理所有输入,只需按照*nix工具的标准一次一行.

文件顶部的SheBang允许您直接执行文件,而不必在命令行中调用php.

将以下内容保存到test.php并运行

cat test.php | ./test.php
Run Code Online (Sandbox Code Playgroud)

看到结果.

#!php
<?php
$handle = fopen('php://stdin', 'r');
$count = 0;
while(!feof($handle)) {
    $buffer = fgets($handle);
    echo $count++, ": ", $buffer;
}
fclose($handle);
Run Code Online (Sandbox Code Playgroud)