jalsoedesign / log-stream
0.5.2
2023-02-11 20:29 UTC
Requires
- php: ^7.4|^8.0
README
一个简单的类,它接受一个文件的路径,并提供以下功能
$stream->readLines(10)获取前10行作为字符串$stream->getLines(10)获取前10行作为数组$stream->readLines(-10)获取最后10行作为字符串$stream->getLines(-10)获取最后10行作为数组$stream->readIncremental()获取文件新增的内容(如写入时那样)
还提供了一个简单的定位行的方法
$stream->seekLines(10)定位到前10行的末尾$stream->seekLines(-10)定位到最后10行的开头$stream->seekReset()将定位重置到第一个字节$stream->seekEnd()定位到末尾
注意:使用负偏移量将按反向顺序返回行(最后一行首先)。可以通过将 $returnOriginalOrder 设置为 true 来防止这种情况:$stream->readLines(-10, true)
安装
composer require jalsoedesign/log-streamer
使用
实例化
use jalsoedesign\LogStream\LogStream; require_once('vendor/autoload.php'); $stream = LogStream::fromPath('foo.txt'); // OR $handle = fread('foo.txt', r); $stream = new LogStream($handle);
前10行
读取文件的前10行并将其作为文本打印出来
$stream = LogStream::fromPath('foo.txt'); echo 'The first 10 lines:' . PHP_EOL; echo $stream->readLines(10);
读取文件的前10行并将其作为数组打印出来
$stream = LogStream::fromPath('foo.txt'); echo 'The first 10 lines:' . PHP_EOL; print_r($stream->getLines(10));
最后10行
读取文件的最后10行并将其作为文本打印出来
$stream = LogStream::fromPath('foo.txt'); echo 'The last 10 lines:' . PHP_EOL; echo $stream->readLines(-10);
读取文件的最后10行并将其作为数组打印出来
$stream = LogStream::fromPath('foo.txt'); echo 'The last 10 lines:' . PHP_EOL; print_r($stream->getLines(-10));
尾部功能
读取文件的最后10行,并在文件更新时继续打印内容
$stream = LogStream::fromPath('foo.txt'); $logStream->seekLines(-10); $running = true; echo 'The last 10 lines as well as all new content:' . PHP_EOL; do { echo $logStream->readIncremental(); usleep(100000); } while ($running);
打开一个流,并仅打印打开后添加到文件中的字节
$stream = \LogStream::fromPath('foo.txt'); $logStream->seekReset(); $running = true; echo 'New file content:' . PHP_EOL; do { echo $logStream->readIncremental(); usleep(100000); } while ($running);