Неблокирующий STDIN в PHP CLI

Есть ли способ чтения из STDIN в PHP, который не блокируется:

Я пробовал это:

stream_set_blocking(STDIN, false);
echo fread(STDIN, 1);

и это:

$stdin = fopen('php://stdin', 'r');
stream_set_blocking($stdin, false);
echo 'Press enter to force run command...' . PHP_EOL;
echo fread($stdin, 1);

но он все равно блокируется, пока fread не получит данные.

Я заметил несколько открытых отчетов об ошибках (7 летней давности), так что если это невозможно сделать, знает ли кто-нибудь грубый хак, который мог бы решить эту задачу (на Windows и Linux)?

14
задан Petah 21 February 2012 в 04:29
поделиться