我处在一个将数据放入命令行的位置,我需要一个php循环(将成为各种服务器)来读取STDIN并回显它所运行的shell读取的内容。
当进程在与回显的内容相同的shell中运行时,以下可怕代码有效:
<?php
echo getmypid();
$string = "/proc/" . getmypid() . "/fd/0";
while (true) {
fwrite(STDOUT, fgets(fopen($string, 'r'), 4096) . " worked\n");
}
?>
我尝试了很多变种:
<?php
echo getmypid();
$string = "/proc/" . getmypid() . "/fd/0";
while (true) {
$fo = fread(STDIN, 1024);
fwrite(STDOUT, $fo);
}
?>
问题在于,无论何时从单独的终端写入此循环,输出都会出现在另一个终端中,但循环不会处理。
当我在同一个终端输入文本时,文本会立即回传。
我需要一种方法将命令行数据从任何源获取到此循环中。