Loading ...
Sorry, an error occurred while loading the content.

Re: [bang-phpug] Re: php script to download the files

Expand Messages
  • jegan
    set maximum execution time in the script. it may be the reason ... ... [Non-text portions of this message have been removed]
    Message 1 of 4 , Jul 31 5:36 AM
    • 0 Attachment
      set maximum execution time in the script. it may be the reason ...

      On Fri, Jul 31, 2009 at 2:50 PM, kumar_manoj77 <kumar_manoj77@...>wrote:

      >
      >
      > I have not access to the php.ini file as it is shared server.
      > I had increase the memory_limit by ini_set function to 64 MB. but still no
      > success.
      >
      > I have doubt, why should i increase the max_file_upload as I am not trying
      > to upload the file.
      > I am trying to download the zip file using php script
      >
      >
      > --- In bang-phpug@yahoogroups.com <bang-phpug%40yahoogroups.com>, Abdul
      > Rehman <abdulrehman97@...> wrote:
      > >
      > > Just expand your memory_limit, post_file_size and max_file_upload in
      > php.ini file and then try. if problem exist then call me.
      > >
      > >
      > >
      > >
      > > ________________________________
      > > From: kumar_manoj77 <kumar_manoj77@...>
      >
      > > To: bang-phpug@yahoogroups.com <bang-phpug%40yahoogroups.com>
      > > Sent: Wednesday, July 29, 2009 11:39:50 AM
      > > Subject: [bang-phpug] php script to download the files
      > >
      > >
      > > I am trying to write a script to download zip file(20 MB). but after
      > downloading content of 5 or 6 MB, the script stops and failed to download
      > the entire file.
      > > I am using the following function
      > > <?php
      > > function dl_file_resumable( $file, $is_resume=TRUE)
      > > {
      > > //First, see if the file exists
      > > if (!is_file($file) )
      > > {
      > > die("<b>404 File not found!</b>") ;
      > > }
      > >
      > > //Gather relevent info about file
      > > $size = filesize($file) ;
      > > $fileinfo = pathinfo($file) ;
      > >
      > > //workaround for IE filename bug with multiple periods / multiple dots in
      > filename
      > > //that adds square brackets to filename - eg. setup.abc.exe becomes
      > setup[1].abc. exe
      > > $filename = (strstr($_SERVER[ 'HTTP_USER_ AGENT'], 'MSIE')) ?
      > > preg_replace( '/\./', '%2e', $fileinfo['basename '], substr_count(
      > $fileinfo[ 'basename' ], '.') - 1) :
      > > $fileinfo['basename '];
      > >
      > > $file_extension = strtolower($ path_info[ 'extension' ]);
      > >
      > > //This will set the Content-Type to the appropriate setting for the file
      > > switch($file_ extension)
      > > {
      > > case 'exe': $ctype='application /octet-stream' ; break;
      > > case 'zip': $ctype='application /zip'; break;
      > > case 'mp3': $ctype='audio/ mpeg'; break;
      > > case 'mpg': $ctype='video/ mpeg'; break;
      > > case 'avi': $ctype='video/ x-msvideo' ; break;
      > > default: $ctype='application /force-download' ;
      > > }
      > >
      > > //check if http_range is sent by browser (or download manager)
      > > if($is_resume && isset($_SERVER[ 'HTTP_RANGE' ]))
      > > {
      > > list($size_unit, $range_orig) = explode('=', $_SERVER['HTTP_ RANGE'], 2);
      > >
      > > if ($size_unit == 'bytes')
      > > {
      > > //multiple ranges could be specified at the same time, but for simplicity
      > only serve the first range
      > > //http://tools. ietf.org/ id/draft- ietf-http- range-retrieval- 00.txt
      > > list($range, $extra_ranges) = explode(',', $range_orig, 2);
      > > }
      > > else
      > > {
      > > $range = '';
      > > }
      > > }
      > > else
      > > {
      > > $range = '';
      > > }
      > >
      > > //figure out download piece from range (if set)
      > > list($seek_start, $seek_end) = explode('-', $range, 2);
      > >
      > > //set start and end based on range (if set), else set defaults
      > > //also check for invalid ranges.
      > > $seek_end = (empty($seek_ end)) ? ($size - 1) : min(abs(intval(
      > $seek_end) ),($size - 1));
      > > $seek_start = (empty($seek_ start) || $seek_end < abs(intval($
      > seek_start) )) ? 0 : max(abs(intval( $seek_start) ),0);
      > >
      > > //add headers if resumable
      > > if ($is_resume)
      > > {
      > > //Only send partial content header if downloading a piece of the file (IE
      > workaround)
      > > if ($seek_start > 0 || $seek_end < ($size - 1))
      > > {
      > > header('HTTP/ 1.1 206 Partial Content');
      > > }
      > >
      > > header('Accept- Ranges: bytes');
      > > header('Content- Range: bytes '.$seek_start. '-'.$seek_ end.'/'.$ size);
      > > }
      > >
      > > //headers for IE Bugs (is this necessary?)
      > > //header("Cache- Control: cache, must-revalidate" );
      > > //header("Pragma: public");
      > >
      > > header('Content- Type: ' . $ctype);
      > > header('Content- Disposition: attachment; filename="' . $filename . '"');
      > > header('Content- Length: '.($seek_end - $seek_start + 1));
      > >
      > > //open the file
      > > $fp = fopen($file, 'rb');
      > > //seek to start of missing part
      > > fseek($fp, $seek_start) ;
      > >
      > > //start buffered download
      > > while(!feof( $fp))
      > > {
      > > //reset time limit for big files
      > > set_time_limit( 0);
      > > print(fread( $fp, 1024*8));
      > > flush();
      > > ob_flush();
      > > }
      > >
      > > fclose($fp);
      > > exit;
      > > }
      > >
      > > ?>
      > >
      > > pls help me to correct the code and download the zip file properly.
      > > thanks in advance.
      > >
      > >
      > >
      > >
      > >
      > >
      > >
      > > [Non-text portions of this message have been removed]
      > >
      >
      >
      >


      [Non-text portions of this message have been removed]
    Your message has been successfully submitted and would be delivered to recipients shortly.