From c5e7524b89a780fcc07badad94328fc486184252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=B6ller?= Date: Mon, 23 Jul 2018 08:43:26 +0200 Subject: [PATCH] Enhancement: Add example for tailing a log file --- examples/tail.php | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 examples/tail.php diff --git a/examples/tail.php b/examples/tail.php new file mode 100644 index 00000000..a790414b --- /dev/null +++ b/examples/tail.php @@ -0,0 +1,40 @@ +getContents($path)->then(function ($content) use ($loop, $filesystem, $path) { + echo $content; + + $lastSize = strlen($content); + + $file = $filesystem->file($path); + + $file->open('r')->then(function (\React\Stream\ReadableStreamInterface $stream) use ($filesystem, $loop, $file, &$lastSize) { + /** @var \React\Filesystem\Stream\GenericStreamInterface $stream */ + $fileDescriptor = $stream->getFiledescriptor(); + + $adapter = $filesystem->getAdapter(); + + $loop->addPeriodicTimer(1, function () use ($adapter, $fileDescriptor, $file, &$lastSize) { + $file->size()->then(function ($size) use ($adapter, $fileDescriptor, &$lastSize) { + if ($lastSize === $size) { + return; + } + + $adapter->read($fileDescriptor, $size - $lastSize, $lastSize)->then(function ($content) { + echo $content; + }); + + $lastSize = $size; + }); + }); + }); +}); + +$loop->run();