I just make a directory that's readable only by my application, and name a file in that directory something like data-$id.txt and read them by looking up the id in the database that refers to that large file. Note that abstracting this stuff out is pretty easy, so you have something like this:
$dir="datadir";
$id=32; # This should come from a query...
$other_id = 35; # This too.
$body=read_data_file($id,$dir) or die ("Can't read record $id from $dir"); # These two functions need to be created, but are only a few lines each.
$write_data_file($other_id,$dir,$body) or die("Couldn't write record $id to $dir. Message body: $body");
I've found that using file operations can be pretty quick if you stick to the while fgets stuff, but file() and fread($handle,1000000000) / explode are slow under PHP 4.0. I haven't benchmarked them since 4.0 RC1 though.