-
-
Notifications
You must be signed in to change notification settings - Fork 131
Expand file tree
/
Copy path11-consume-stdin.php
More file actions
26 lines (20 loc) · 727 Bytes
/
11-consume-stdin.php
File metadata and controls
26 lines (20 loc) · 727 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
use React\EventLoop\Loop;
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);
}
// read everything from STDIN and report number of bytes
// for illustration purposes only, should use react/stream instead
Loop::addReadStream(STDIN, function ($stream) {
$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;
});