diff options
Diffstat (limited to 'assets/php/vendor/react/event-loop/examples/11-consume-stdin.php')
-rw-r--r-- | assets/php/vendor/react/event-loop/examples/11-consume-stdin.php | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/assets/php/vendor/react/event-loop/examples/11-consume-stdin.php b/assets/php/vendor/react/event-loop/examples/11-consume-stdin.php new file mode 100644 index 0000000..2a77245 --- /dev/null +++ b/assets/php/vendor/react/event-loop/examples/11-consume-stdin.php @@ -0,0 +1,30 @@ +<?php + +use React\EventLoop\Factory; + +require __DIR__ . '/../vendor/autoload.php'; + +if (!defined('STDIN') || stream_set_blocking(STDIN, false) !== true) { + fwrite(STDERR, 'ERROR: Unable to set STDIN non-blocking (not CLI or Windows?)' . PHP_EOL); + exit(1); +} + +$loop = Factory::create(); + +// read everything from STDIN and report number of bytes +// for illustration purposes only, should use react/stream instead +$loop->addReadStream(STDIN, function ($stream) use ($loop) { + $chunk = fread($stream, 64 * 1024); + + // reading nothing means we reached EOF + if ($chunk === '') { + $loop->removeReadStream($stream); + stream_set_blocking($stream, true); + fclose($stream); + return; + } + + echo strlen($chunk) . ' bytes' . PHP_EOL; +}); + +$loop->run(); |