将数据管道化到命令行 php 中?
2022-08-30 14:04:40
是否可以使用 unix 管道将数据管道传输到命令行 php 脚本中?我试过了
$> data | php script.php
但是预期的没有出现在.有没有办法做到这一点?data
$argv
是否可以使用 unix 管道将数据管道传输到命令行 php 脚本中?我试过了
$> data | php script.php
但是预期的没有出现在.有没有办法做到这一点?data
$argv
PHP可以从标准输入中读取,并且还为它提供了一个很好的快捷方式:STDIN
。
有了它,您可以使用stream_get_contents
等内容来执行以下操作:
$data = stream_get_contents(STDIN);
这只会将所有管道数据转储到 中。$data
如果要在读取所有数据之前开始处理,或者输入大小太大而无法放入变量中,则可以使用:
while(!feof(STDIN)){
$line = fgets(STDIN);
}
STDIN
只是 的捷径。相同的方法可以应用于读取和写入文件以及 tcp 流。$fh = fopen("php://stdin", "r");
据我所知,将显示程序的参数,换句话说:$argv
php script.php arg1 arg2 arg3
但是,如果您通过管道将数据传输到PHP中,则必须从标准输入中读取它。我从来没有尝试过这个,但我认为它是这样的:
$fp = readfile("php://stdin");
// read $fp as if it were a file