У меня проблема с чтением команд ввода из консольного приложения, созданного на php.
ПРОБЛЕМА
Если пользователь, использующий консоль по ошибке, нажимает два или более раз ENTER или несколько символов во время загрузки процесса, команда читается перед тем, как задать вопрос, а затем пропустить следующий.
Я пробовал эти методы для получения входного значения, но каждый раз нахожу одну и ту же проблему:
fgets(STDIN);
readline("Question: ");
stream_get_line(STDIN, 1024, "\n");
Пример кода:
<?php
for($i = 0; $i < 15; $i++){
$read = readline("Question $i: "); // Look at the number
echo "Your answer is: " . $read . PHP_EOL;
sleep(2); // Now on execution try press ENTER one ore more times
}
ПОПЫТКИ
Я пробовал это, но этот метод не работает с буферами (я все равно пробовал точно):
$handle = fopen('php://stdin', 'r+');
ftruncate($handle, 0);
rewind($handle);
fclose($handle);
$read = readline("Question: ");
ВОПРОС
Как я могу читать и ждать ввода в момент отображения вопроса, отбрасывая предыдущий ввод?