icyapril / tail
PHP 库,旨在模仿 Unix tail 命令。
v1.0
2016-09-19 17:04 UTC
Requires
- php: >7.0.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: 5.5.0
This package is auto-updated.
Last update: 2024-08-29 04:25:28 UTC
README
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