Ladda ner stora filer

PHP

0 svar · 321 visningar · startad av Blixtsystems

Medlem sedan maj 2005704 inlägg
Trådstart#1

Hejsan,

Jag har ett problem med ett skript för nedladdning av stora filer.
Anledning till att jag kör med PHP för att läsa filen är att det är filer som ligger utanför html foldern då det är nedladdning för betalande kunder endast.

Jag körde tidigare på min egen server, och då fungerade mitt skript bra även om servern i övrigt var märkbart slöare med att exekvera PHP.
Men på den host jag kör med nu (servage) så tar det flera minuter att få en respons från mitt nedladdningsskript, men då "save as" dialogen väl kommer upp så går nedladdningen mycket snabbt.

Detta är den kod jag har just nu som segar ner responsen:

  	if (!is_file($path) or connection_status()!=0) return(FALSE);
	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: public", false);
	header("Content-Description: File Transfer");
	header("Content-type: application/x-unknown");
	header("Accept-Ranges: bytes");
	header("Content-Disposition: attachment; filename=\"" . $name . "\";");
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: " . filesize($path));
  	if ($file = fopen($path, 'rb')) {
    		while(!feof($file) and (connection_status()==0)) {
			set_time_limit(0);
      			print(fread($file, 1024*8));
      			flush();
			ob_flush();
    		}
    		$status = (connection_status()==0);
    		fclose($file);
 	}
  	return($status);

Jag har testat att mixtra runt med allt möjligt i feof loopen och i headers, men utan någon märkbar skillnad.
Filerna är mellan 100-600Mb.

257 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)