jakubboucek/php-tail-stream

PHP implementation of linux tail command, optimized for read huge size archives, effective memory usage.

v1.0.0 2024-12-14 14:26 UTC

This package is auto-updated.

Last update: 2024-12-14 15:15:01 UTC


README

PHP implementation of the Linux tail command (display the last part of a file), optimized for reading huge size files with effective memory usage.

Installation

You can install the package via Composer:

composer require jakubboucek/php-tail-stream

and declare namespace:

use JakubBoucek\Tail\Tail;

Usage

Tail::lines(10)
    ->fromFile('path/to/your/file.txt')
    ->toOutput();

// Output the last 10 lines of the file

You can also read data from your stream:

$f = fopen('path/to/your/file.txt', 'rb');

Tail::lines(10)
    ->fromStream($f)
    ->toOutput();

// Output the last 10 lines from the stream

Note

Source stream MUST allow seeking! You can't use some stream types, like HTTP stream for example.

You can write result to file or another stream, use methods:

 - toFile('path/to/your/output.txt'); // Write to file
 - toStream($stream);                 // Write to stream
 - toIterator();                      // Get iterator containting lines as strings

Warning

The toIterator() method reads the every line to memory. Use it carefully - when you load huge file with very long lines, it can cause memory issues. Be aware especially when you load unknown files, when file doesn't have line separators (e.g. if you accidentally load binary file), whole file will be loaded to memory. To prevent unexpected behavior is method limited to 1 MB of data. You can change this limit by passing the argument $maxLineSize.

License

The MIT License (MIT). Please see License File for more information.