in reply to Get content of a big text file on a server

If the server is configured for Range Requests; and if you can estimate where the 10,000 lines you want will start; then you can save downloading the whole lot and just get the bit you need. Which will be much faster.

For example. You say that the file is 10MB and that is 150,000 lines; and you want just the last 10,000. Assuming reasonably equal length lines, they will average 70 chars per line, so all you want is the last 700kb which is just 7% of the whole thing.

Using LWP::UserAgent you can do a range request something like this like this:

$ua->get( $url, Range => 'bytes=-1000000' );

That will fetch the last million chars of the file which you can read backward to get your 10,000 lines.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP PCW

Replies are listed 'Best First'.
Re^2: Get content of a big text file on a server
by Shuzaku (Initiate) on Aug 12, 2009 at 09:33 UTC
    Awesome ! This is very fast and efficient ! Thank you a lot