Re: [PHP] Reading log files.

2002-02-04 Thread Jeff Sheltren

Well, the first thing that comes to mind would be using the UNIX tail 
command.  Of course, this does you no good if you're on windows, but I'm 
not sure if that is the case.

if $n is the number of lines specified by the user, then the code would be 
like:

System(tail -$n logfile);

Jeff

At 12:22 AM 2/5/2002 -0300, Jared wrote:
I am creating a script that reads Radius log files and prints them to
the browser.  I want the User to be able to specify the Number of lines
they want to see beginning at the end of the file and going up instead
of reading the lines at the beginning (Which I can do).
Does anyone have an idea on how to do this?

Thanks in Advanced  Jared



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] Reading log files.

2002-02-04 Thread Lars Torben Wilson

On Mon, 2002-02-04 at 19:22, Jared wrote:
 I am creating a script that reads Radius log files and prints them to
 the browser.  I want the User to be able to specify the Number of lines
 they want to see beginning at the end of the file and going up instead
 of reading the lines at the beginning (Which I can do). 
 Does anyone have an idea on how to do this?
 
 Thanks in Advanced  Jared

I came up with two little routines for this sort of thing. The one using
arrays is faster on small files; the one using fseek() is much, much 
faster on big files. Take your pick:

?php
function tail($filename, $lines) {
/* Read file into an array. */
$text = file($filename);

/* Move to the last line. */
end($text);

/* Back up until we're the right number of lines from the end. */
for ($i = 1, $cnt = count($text); $i  $lines  $i = $cnt; $i++) {
prev($text);
}

/* Now just dump them. */
while (list(, $line) = each($text)) {
echo $line;
}
}

function tail($filename, $lines) {
/* Open and position the pointer at the end of the file. */
$fp = fopen($filename, 'r');
fseek($fp, 0, SEEK_END);

$filesize = filesize($filename);
$nls = 0;
$i = 1;
while ($nls  $lines  $i  $filesize) {
if  (($char = fgetc($fp)) === \n) {
$nls++;
}
fseek($fp, -2, SEEK_CUR);
$i++;
}

$text = '';
while (!feof($fp)) {
$text .= fgets($fp, 4096);
}

echo $text;

fclose($fp);
}
?


Hope this helps,

Torben


-- 
 Torben Wilson [EMAIL PROTECTED]
 http://www.thebuttlesschaps.com
 http://www.hybrid17.com
 http://www.inflatableeye.com
 +1.604.709.0506


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php