Re: Read Last Lines of a Text File
| From: | Oliver Hankeln | Date: | Thu, 17 Jun 2004 15:13:47 +0000 |
| Subject: | Re: Read Last Lines of a Text File | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-188491@lists.php.net to get a copy of this message | ||
Scott Miller wrote:
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* Thus wrote Scott Miller (srmiller@interbel.net):orI have a text file (log file) that I want to be able to read the last 30large40 lines of. I've created the code below, but since this file is sonot(currently 8 MB) it won't work. The code works on smaller files, butwrong?this one. Can someone look at this below and tell me where I wentschemes... $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 pyramidyou'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).