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