Scott Miller wrote:
* Thus wrote Scott Miller ([EMAIL PROTECTED]):
I have a text file (log file) that I want to be able to read the last 30
or
40 lines of. I've created the code below, but since this file is so
large
(currently 8 MB) it won't work. The code works on smaller files, but
not
this one. Can someone look at this below and tell me where I went
wrong?
...
$fcontents = file($filename);
This will make your script consume lots of memory, and is very inefficient.
You'd be better of using the unix tail command:
$fp = popen("/usr/bin/tail -$limit $file", 'r'); if (! $fp ) { echo 'unable to pipe command'; } while (!feof($fp) ) { $line = fgets($fp); print $line; }
Of course if you're simply going to output the results a simple:
system("/usr/bin/tail -$limit $file");
Would do the job nicely.
Curt -- First, let me assure you that this is not one of those shady pyramid
schemes
you've been hearing about. No, sir. Our model is the trapezoid!
--
I've changed my script to the following:
<?php
$file ="/var/log/radius.log";
$fp = popen("/usr/bin/tail -$limit $file", 'r'); if (! $fp ) { echo 'unable to pipe command'; } while (!feof($fp) ) { $line = fgets($fp); print $line; } ?>
And now get the following errors:
Warning: Wrong parameter count for fgets() in /var/www/html/logs2.php on line 10
I get this over and over and over (like it's producing the error once per line in the log file).
prior to PHP 4.2 you had to use a second parameter for fgets. This parameter is the maximum length per line to read.
$line = fget($fp,4096);
will probably work.
HTH, Oliver
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php