Skip to content

Commit 0770895

Browse files
committed
Merge #312 - Fix #309 - Use stream_select instead of non-blocking STDIN
Pull-request: #312 Fixes: #309 Signed-off-by: William Desportes <[email protected]>
2 parents 6f31612 + c862a10 commit 0770895

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/Utils/CLI.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,22 @@ public function runTokenize()
233233
return 1;
234234
}
235235

236-
public function readStdin() {
237-
stream_set_blocking(STDIN, false);
238-
$stdin = stream_get_contents(STDIN);
239-
// restore-default block-mode setting
240-
stream_set_blocking(STDIN, true);
236+
public function readStdin()
237+
{
238+
$read = array(STDIN);
239+
$write = array();
240+
$except = array();
241+
242+
// Assume there's nothing to be read from STDIN.
243+
$stdin = null;
244+
245+
// Try to read from STDIN. Wait 0.2 second before timing out.
246+
$result = stream_select($read, $write, $except, 0, 2000);
247+
248+
if ($result > 0) {
249+
$stdin = stream_get_contents(STDIN);
250+
}
251+
241252
return $stdin;
242253
}
243254
}

0 commit comments

Comments
 (0)