PHP CLI - 同时管道和提示?

时间:2016-08-19 19:55:42

标签: php command-line-interface wp-cli

我有两个php cli脚本。第一个将数据传输到第二个数据。 我希望第二个提示用户进行确认。 这可能吗?

我正在使用wordpress'php-cli-tools,但我的问题似乎适用于一般的php,从我的基本测试看到的。 (即fgets(),readline等)

我永远无法得到提示工作,因为它看起来总是会读取前一个输入中的EOT字符,即使我已经读过它了......

然后,稍后,当我通过使用fwrite进行输出然后使用fgets()进行输入时,没有任何反应。程序正在等待发生的事情......不确定是什么...... 如果我使用该库,我会收到错误'在输入过程中捕获^ D'。 readline没有运气......

有没有人曾经这样做过?

非常感谢你!

1 个答案:

答案 0 :(得分:1)

问题并非真正针对PHP,它适用于任何语言。在Unix上,如果你想忽略输入重定向并直接从终端读取,你可以从/dev/tty而不是标准输入读取。

function prompt_user($prompt) {
    $terminal = fopen("/dev/tty", "r+");
    if ($terminal) {
        fputs($terminal, $prompt);
        return fgets($terminal);
    }
}