jalsoedesign/log-stream

0.5.2 2023-02-11 20:29 UTC

This package is auto-updated.

Last update: 2024-09-11 23:53:57 UTC


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