
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte
Unternehmen im
Anbieterverzeichnis von SELFPHP
:: SELFPHP Forum ::
Fragen rund um die Themen PHP? In über
120.000 Beiträgen finden Sie sicher die passende
Antwort! 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler. 
|
|
Download-Geschwindigkeit drosseln  |
Beispielaufgabe
Nachfolgend stellen wir Ihnen eine Funktion vor, mit der Sie die Geschwindigkeit bei einem Download festlegen können. Sicherlich kennen Sie Seiten, die solch eine begrenzte Downloadgeschwindigkeit anbieten und nur die volle Bandbreite kostenpflichtig zur Verfügung stellen.
Gerade wenn Sie viele Downloads haben, kann diese Funktion für Sie nützlich sein, um die Bandbreite, die Ihnen zur Verfügung steht, zu drosseln. Oder Sie möchten nur speziellen Usern oder Gruppen die volle Bandbreite zur Verfügung stellen.
Die einzustellende Downloadrate ist nur ein Richtwert der nicht überschritten werden soll. In unserem Beispiel wurde die Downloadrate auf max. 25,5 kb/s eingestellt. Tatsächlich aber wurde eine Downloadgeschwindigkeit von 23,8 kb/s erreicht.
Nachfolgend sehen Sie den Zugriff auf die Funktion.
<?php
// Download Datei
$sourceFile = 'RonanSon.zip';
// Name der Datei - wird beim Download angezeigt
$filename = 'irgend-ein-name.zip';
// Download Rate auf 25,5 kb/s setzen
$downloadRate = 25.5;
downloadWithRateLimit( $sourceFile, $filename, $downloadRate );
?>
|
DownloadSpeedLimit.php
Hier sehen Sie noch die vollständige Funktion für die Drosselung der Download-Geschwindigkeit.
<?php
/**
* Download Speed Limit
*
* @author SELFPHP OHG
* @copyright 2009, SELFPHP OHG
* @license BSD License
* @link http://www.selfphp.de
*
*/
function downloadWithRateLimit( $sourceFile, $filename, $rate ){
if( file_exists( $sourceFile ) ){
// Header senden
header( 'Cache-control: private' );
header( 'Content-Type: application/octet-stream' );
header( 'Content-Length: ' . filesize( $sourceFile ) );
header( 'Content-Disposition: filename=' . $filename );
// Ausgabepuffer leeren
flush();
// Download-Datei öffnen
$file = fopen( $sourceFile, "r" );
while( !feof( $file ) ) {
// send the current file part to the browser
print fread( $file, round( $rate * 1024 ) );
// Ausgabepuffer leeren
flush();
// Übertragung für 1 sec. stoppen
sleep(1);
}
// Download-Datei schließen
fclose($file);
return true;
}
return false;
}
?>
|
Download
DownloadSpeedLimit.zip

|
|
|
|
|


|