Archief - PHP: Download via headers

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Marbug

Legacy Member
Ik heb een script gemaakt om bestanden van mijn server af te halen. Maar wanneer dat bestand te groot is stopt hij in de helft ongeveer. Ik wou een bestand van 3.24GB afhalen en hij stopt bij 1.64GB waarom vind ik maar niet...

deze ode gebruik ik:
PHP:
function serveFile( $file , $as ){
	header( 'Expires: Mon, 1 Apr 1974 05:00:00 GMT' );
	header( 'Pragma: no-cache' );
	header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
	header( 'Content-Description: File Download' );
	header( 'Content-Type: application/octet-stream' );
	header( 'Content-Length: '.real_filesize_linux( $file ) );
	header( 'Content-Disposition: attachment; filename="'. $as .'"' );
	header( 'Content-Transfer-Encoding: binary' );
	@readfile( $file );
}
function real_filesize_linux($file) {
	return trim(`stat -c%s "$file"`);
}
iemand dat ziet wat er verkeerd is?
en wanneer ik bestanden download geeft hij toch de juiste grootte aan, maar hij stopt gewoon...

kheb gewoon een symlink gemaakt dus moet ik deze methode nimeer gebruiken, en het bespaart me ook enkele problemen... toch zou ik graag willen weten hoe het zou komen

killgore

Legacy Member
exit() toevoegen na readfile functie is al vrij belangrijk!

en voor de rest:
http://be2.php.net/readfile

hier eens zoeken naar chunked file-read functies. readfile crasht idd op grotere bestanden, don't know why.

edit: let er wel op dat chunked downloads uw execution time immens de hoogte kunnen insturen! Maar als je het goed doet kan je de download soms wel versnellen ook op die manier (download accellerators leggen dan meerdere parallelle tcp connecties aan, wat u snelheid boost).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan