To send a complete file from disk, without applying any modifications first, instead of:
my $filename = "/tmp/foo"; my $fh = Apache::gensym( ); # generate a new filehandle open $fh, $filename or return NOT_FOUND; print <$fh>; close $fh;
it's better to write:
my $filename = "/tmp/foo"; my $fh = Apache::gensym( ); # generate a new filehandle open $fh, $filename or return NOT_FOUND; $r->send_fd($fh); close $fh;
The former implementation uses more memory and it's slower, because it creates a temporary variable to read the data in and then print it out. The latter uses optimized C code to read the file and send it to the client.
Copyright © 2003 O'Reilly & Associates. All rights reserved.