Привет, я использую PHP в режиме CLI (интерфейс командной строки)
Я хотел бы получить ключ, который пользователь вводит, и немедленно отправить его в программу без необходимости нажатия клавиши возврата (Enter Key). Так, например, мне понравилось печатать письмо, которое пользователь вводит немедленно. Поэтому, если пользователь вводит «a», он сразу же отображает «a» в командной строке. Как мне это сделать?
do { $selection = fgetc(STDIN); fwrite(STOUT, "$selection"); } while ( trim($selection) == '' );
Существует несколько способов отключения буферизации ввода:
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);
например, не имеет никакого эффекта
Либо отключите буферизацию на stdin, либо используйте ncurses.