It seems this function is not blocking anymore:
<?php
do {
readline_callback_read_char();
$str = readline_info('line_buffer');
echo '.';
} while (strlen($str) < 10);
echo PHP_EOL . $str . PHP_EOL;
?>
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
readline_callback_read_char — 文字を読み込み、改行を受け取ると readline コールバックインターフェイスに通知する
ユーザーが入力した文字を読み込みます。改行を受け取ると、この関数は readline_callback_handler_install() で インストールされた readline コールバックインターフェイスに対して 入力待ちを通知します。
この関数にはパラメータはありません。
値を返しません。
readline コールバックインターフェイスの使用方法についての例は readline_callback_handler_install() を参照ください。
It seems this function is not blocking anymore:
<?php
do {
readline_callback_read_char();
$str = readline_info('line_buffer');
echo '.';
} while (strlen($str) < 10);
echo PHP_EOL . $str . PHP_EOL;
?>
Note that this function is blocking if there is no character to read
If you don`t want to get blocked, you should use the trick with stream_select()
It also only reads one char per call,
So if something else in your script is blocking,
you`ve got a problem