我正在尝试编写一个简单的 php 脚本来获取数据stdin
,处理它,然后将其写入stdout
。我知道 PHP 可能不是处理此类事情的最佳语言,但有我需要的现有功能。
我试过了
<?php
$file = file_get_contents("php://stdin", "r");
echo $file;
?>
但它不起作用。我这样调用它:echo -e "\ndata\n" | php script.php | cat
。并且没有收到任何错误消息。我尝试构建的脚本实际上将成为更大管道的一部分。
关于为什么这不起作用的任何线索?
PS:我对 PHP 不太有经验。
如果您正在使用管道,您将需要缓冲输入,而不是一次处理所有内容,只需像 *nix 工具的标准那样一次处理一行。
文件顶部的 SheBang 允许您直接执行文件,而不必在命令行中调用 php。
将以下内容保存到 test.php 并运行
cat test.php | ./test.php
查看结果。
#!php
<?php
$handle = fopen('php://stdin', 'r');
$count = 0;
while(!feof($handle)) {
$buffer = fgets($handle);
echo $count++, ": ", $buffer;
}
fclose($handle);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)