Initial commit
This commit is contained in:
commit
877e01be76
1 changed files with 54 additions and 0 deletions
54
multitail.php
Normal file
54
multitail.php
Normal file
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
const TAIL_CMD = 'tail -F %s';
|
||||
|
||||
$log_globs = array_slice($argv, 1);
|
||||
|
||||
$files = [];
|
||||
foreach ($log_globs as $glob)
|
||||
{
|
||||
$files += glob($glob);
|
||||
}
|
||||
|
||||
$pipes = [];
|
||||
|
||||
if (count($files) == 0)
|
||||
{
|
||||
fwrite(STDERR, 'No files given!');
|
||||
return 1;
|
||||
}
|
||||
|
||||
foreach ($files as $id => $file)
|
||||
{
|
||||
$newkey = basename($file);
|
||||
if (is_string($id))
|
||||
{
|
||||
$newkey = $id;
|
||||
}
|
||||
|
||||
$pipes[$newkey] = popen(sprintf(TAIL_CMD, escapeshellarg($file)), 'r');
|
||||
stream_set_blocking($pipes[$newkey], 0);
|
||||
}
|
||||
|
||||
$w = null;
|
||||
$e = null;
|
||||
|
||||
while (true)
|
||||
{
|
||||
$read = $pipes;
|
||||
$modified = stream_select($read, $w, $e, null);
|
||||
|
||||
if ($modified > 0)
|
||||
{
|
||||
foreach ($read as $file => $pipe)
|
||||
{
|
||||
$file = explode('.', $file)[0];
|
||||
while ($line = fgets($pipe))
|
||||
{
|
||||
echo $file, ': ', $line;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
Loading…
Reference in a new issue