aboutsummaryrefslogtreecommitdiffhomepage
path: root/assets/php/vendor/react/event-loop/examples/12-generate-yes.php
diff options
context:
space:
mode:
authormarvin-borner@live.com2018-04-10 21:50:16 +0200
committermarvin-borner@live.com2018-04-10 21:54:48 +0200
commitfc9401f04a3aca5abb22f87ebc210de8afe11d32 (patch)
treeb0b310f3581764ec3955f4e496a05137a32951c3 /assets/php/vendor/react/event-loop/examples/12-generate-yes.php
parent286d643180672f20526f3dc3bd19d7b751e2fa97 (diff)
Initial Commit
Diffstat (limited to 'assets/php/vendor/react/event-loop/examples/12-generate-yes.php')
-rw-r--r--assets/php/vendor/react/event-loop/examples/12-generate-yes.php41
1 files changed, 41 insertions, 0 deletions
diff --git a/assets/php/vendor/react/event-loop/examples/12-generate-yes.php b/assets/php/vendor/react/event-loop/examples/12-generate-yes.php
new file mode 100644
index 0000000..ebc2beb
--- /dev/null
+++ b/assets/php/vendor/react/event-loop/examples/12-generate-yes.php
@@ -0,0 +1,41 @@
+<?php
+
+require __DIR__ . '/../vendor/autoload.php';
+
+// data can be given as first argument or defaults to "y"
+$data = (isset($argv[1]) ? $argv[1] : 'y') . "\n";
+
+// repeat data X times in order to fill around 200 KB
+$data = str_repeat($data, round(200000 / strlen($data)));
+
+$loop = React\EventLoop\Factory::create();
+
+if (!defined('STDOUT') || stream_set_blocking(STDOUT, false) !== true) {
+ fwrite(STDERR, 'ERROR: Unable to set STDOUT non-blocking (not CLI or Windows?)' . PHP_EOL);
+ exit(1);
+}
+
+// write data to STDOUT whenever its write buffer accepts data
+// for illustrations purpose only, should use react/stream instead
+$loop->addWriteStream(STDOUT, function ($stdout) use ($loop, &$data) {
+ // try to write data
+ $r = fwrite($stdout, $data);
+
+ // nothing could be written despite being writable => closed
+ if ($r === 0) {
+ $loop->removeWriteStream($stdout);
+ fclose($stdout);
+ stream_set_blocking($stdout, true);
+ fwrite(STDERR, 'Stopped because STDOUT closed' . PHP_EOL);
+
+ return;
+ }
+
+ // implement a very simple ring buffer, unless everything has been written at once:
+ // everything written in this iteration will be appended for next iteration
+ if (isset($data[$r])) {
+ $data = substr($data, $r) . substr($data, 0, $r);
+ }
+});
+
+$loop->run();