您好我在CLI模式下使用PHP(命令行界面)
我想获取用户输入的密钥并立即将其提交给程序,而无需用户按返回键(Enter键) 所以例如,我希望能够立即打印用户输入的字母。因此,如果用户键入“a”,它会立即在命令提示符中显示“a”。我该怎么做?
do {
$selection = fgetc(STDIN);
fwrite(STOUT, "$selection");
} while ( trim($selection) == '' );
答案 0 :(得分:2)
有几种方法可以禁用输入缓冲:
http://www.mail-archive.com/php-general@lists.php.net/msg151195.html似乎有效:
exec("stty -icanon min 0 time 0");
其他一些建议如下:http://bugs.php.net/bug.php?id=34972但stream_set_blocking(STDIN, false);
例如无效
答案 1 :(得分:1)
在stdin上禁用缓冲或改为使用ncurses。