我正在尝试编写一个简单的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不是很有经验.
如果你是管道,你需要缓冲输入,而不是一次处理所有输入,只需按照*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)
| 归档时间: |
|
| 查看次数: |
18368 次 |
| 最近记录: |