Here is what Im attempting....

$size = filesize("chat/chat.txt"); // get size of file
if (filesize("chat/chat.txt") > 500) { // if over x bytes chop it down
         $fp = fopen("./chat/chat.txt", "r+"); // open a fp
         $count = 0;                          // setup a count
         while (!@feof($fp) && ($count < 2)) { //if not eof & < 2
                 rewind($fp);           // go to beginning
                 $bytes = fgets($fp, 4096); // get the # of bytes in line
                 ftruncate($fp, $bytes);  // kill line with # of bytes
                 $count = $count + 1; // increment count
         }                              // end while loop
fclose($fp); 
                        // close fp
} 
                                // close if

here is what is happening currently, when the file goes over 500 bytes,
the whole file gets dumped, not what I want.  The form Im using can only 
put out 109 bytes plus /n total.  In this example (if you want to call 
it one), I would like it to kill the first 2 lines in the file.  Thanks 
to Hughes for putting me on to this, its a little clearer...





Gerard Samuel wrote:
> You know what, I think Im explaining myself wrong.  The word truncate in
> itself means I believe to cut at the bottom.  This isn't what I need.
> Basically, its a chat script and all the newer messages are at the
> bottom, and when the file reaches x bytes I want to 'cut off the head'
> of the file by x lines. leaving the most current messages at the bottom
> alone.
> Ive been messing around with truncate all this time getting the wrong
> results.  Why cant files be as easy as databases.... :)
> If any one has a clue please point it to me.
> Meantime, back to the manual.....
> Thanks
> 
> Sterling Hughes wrote:
>  > On Fri, 7 Sep 2001, Gerard Samuel wrote:
>  >
>  >
>  >>Can a file be truncated from the beginning, and by x amount of lines??
>  >>Thanks
>  >>
>  >>
>  >     Truncated from the beginning?  Do you mean truncate the file by X
>  >     lines, starting from the first position in the file, well, yeah:
>  >
>  >     <?php
>  >     $fp = fopen("filename", "r+");
>  >
>  >     // Start counting from 0, set to one, if you want to start counting
>  >     // from 1
>  >     $count = 0;
>  >
>  >     while (!@feof($fp)) {
>  >         // Not used, but unless your line lengths are longer than
>  >         // 4K, this will effectively skip over a line
>  >         $line = fgets($fp, 4096);
>  >
>  >         if (++$count == $line_number_you_want) {
>  >             ftruncate($fp, ftell($fp));
>  >         }
>  >     }
>  >
>  >     fclose($fp);
>  >     ?>
>  >
>  >     Please note the above is devoid of error checking :)
>  >
>  >     -Sterling
>  >
>  >
>  >
> 
> 
> 
> 



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to