perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Cardwell <>
Subject Tar process not dying after user hits "stop"
Date Sun, 12 Dec 2004 16:11:33 GMT
Hi people,

I'm using:


On a Debian Sarge system.

The code I'm having problems with is quite long, so I've written a cut 
down version. In my virtual host block I have something along the lines 

<Location /test.tar>
       SetHandler perl-script
       PerlHandler My::Handler

Basically, you go to /test.tar and a tarball is returned by My::Handler. 
However, it is generated on the fly like:

# Get the content-length:
my( $command ) = "/bin/tar -c -h -f /dev/null --totals the_directory 2>&1"=~/^(.+)$/;
`$command` =~ /Total bytes written: (\d+)/gsm;

# Send the content-length
$r->header_out('Content-Length', $1 );

# Open a "filehandle" to the tar command
( $command ) = "/bin/tar -c -h -f - the_directory 2>/dev/null"=~/^(.+)$/;
open my $filehandle,"$command |";

# Send the data:
$r->send_fd( $filehandle );

# Close the filehandle
close $filehandle;

The problem is, when someone hits stop in their web browser and ends the 
transfer prematurely, the tar command doesn't die like I'd hoped it would. 
I'm assuming here that I'm missing something basic in my knowledge of how 
modperl works...

Thank you in advance for any help.

P.S. I included the content-length part just in case anyone knew of a 
better way to calculate the size a tarball is going to be before it is 
actually generated...

Digital photo printing and photos onto gifts:

Report problems:
Mail list info:
List etiquette:

View raw message