Я хочу, чтобы каждый раз читал один символ из командной строки в PHP, однако кажется, что из-за чего-то там некоторая входная буферизация предотвращает это.
Рассмотрим этот код:
#!/usr/bin/php
<?php
echo "input# ";
while ($c = fread(STDIN, 1)) {
echo "Read from STDIN: " . $c . "\ninput# ";
}
?>
Вводя "foo" в качестве ввода (и нажав enter), вывод, который я получаю, следующий:
input# foo
Read from STDIN: f
input# Read from STDIN: o
input# Read from STDIN: o
input# Read from STDIN:
input#
Ожидаемый результат:
input# f
input# Read from STDIN: f
input# o
input# Read from STDIN: o
input# o
input# Read from STDIN: o
input#
input# Read from STDIN:
input#
(То есть, когда символы считываются и обрабатываются по мере их ввода).
Однако в настоящее время каждый символ считывается только после нажатия клавиши ввода. У меня есть подозрение, что TTY выполняет буферизацию ввода.
В конечном итоге я хочу читать клавиши, такие как стрелка ВВЕРХ, стрелка ВНИЗ и т.д.
Спасибо заранее!