icyapril/tail

PHP 库,旨在模仿 Unix tail 命令。

v1.0 2016-09-19 17:04 UTC

This package is auto-updated.

Last update: 2024-08-29 04:25:28 UTC


README

Build Status Code Climate Test Coverage Issue Count

PHP Tail 库

一个用于追踪文件的 PHP 库,支持 PHP 7.0 及以上版本。

目前,此库允许您获取指定文件的尾部。后续对 getTail 函数的调用将返回自上次调用以来添加的内容。

使用方法

首先,我们创建一个包含 3 行文本的随机文件。

$fileLocation = tempnam(sys_get_temp_dir(), 'tailTest');
file_put_contents($fileLocation, "Hello 1" . PHP_EOL . "Hello 2" . PHP_EOL . "Hello 3" . PHP_EOL);

现在我们可以实例化 Tail Config 类,并将其注入到 Tail 操作符的构造函数中,然后运行 getTail 函数

$config = new \IcyApril\Tail\Config($fileLocation);
$config->setLines(2);

$tail = new \IcyApril\Tail\Tail($config);
echo $tail->getTail();

这将输出我们创建的文件的最后两行

Hello 2
Hello 3

假设我们随后向文件中添加一行

file_put_contents($fileLocation, "Hello 4" . PHP_EOL, FILE_APPEND | LOCK_EX);

再次运行 getTail 将返回 Hello 4

echo $tail->getTail();
// Hello 4

何时运行 getTail?

您可以通过使用 inotify 监视器或简单地使用带有 filemtime() 函数的轮询来决定何时调用 getTail 函数。

注意事项

  • 输出基于行数。如果您的文件最初有 15 行,然后变成 17 行;下一轮 getTail 调用将显示最后两行。
  • 如果文件被覆盖,行数少于最初的数量;下一轮 getTail 调用将返回整个新文件。
  • 显然,您需要自己的轮询/监视来决定何时调用 getTail