| 
<?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();
 
 |