Download Geschwindigkeit beschränken

L

Lukasz

Hallo!

Kennt Jemand ein Script mit den man eine Download Geschwindigkeit beschränken kann, so das Gäste langsamer ziehen wiie Mitglieder?
 
Ich denke, dass soetwas nicht auf PHP realisiert werden kann,
sondern nur über externe Scripte/Programme läuft.
 
Wie es der Zufall so will, habe ich grade etwas sehr interessantes für dich gefunden.
Ich war grade auf PHP.net auf der suche nach etwas anderem, hab das hier gesehen und mich gleich an deinen Thread erinnert, also wenn es dir noch hilft:

In Verbindung mit einem Download-Protector (Tutorial) sicherlich recht sinnvoll...

PHP:
<?
$file = "test.mp3"; // file to be send to the client
$speed = 8.5; // 8,5 kb/s download rate limit

if(file_exists($file) && is_file($file)) {

    header("Cache-control: private");
    header("Content-Type: application/octet-stream"); 
    header("Content-Length: ".filesize($file));
    header("Content-Disposition: filename=$file" . "%20"); 

    flush();

    $fd = fopen($file, "r");
    while(!feof($fd)) {
        echo fread($fd, round($speed*1024));
        flush();
        sleep(1);
    }
    fclose ($fd);

}
?>
 
Noch ein kleiner Tipp: Bei recht großen Downloads, genauer gesagt, welche die länger als die max_execution_time sind, kann es sein, dass der Download nach eben dieser Zeit abbricht.

Wenn es dein Hoster zulässt, kannst du diese Beschränkung aufheben:
PHP:
set_time_limit(900);
Setzt das Limit, nach dem abgebrochen wird, auf 15 Minuten (900 Sekunden).
Wenn du es auf 0 setzt, dann gibt es keine Begrenzung, allerdings kann das bei unsachgemäßer Handhabung eventuell zum Serverabsturz führen (denke ich)!
 
Fabian, bist du dir da sicher ?

Ich kenn soetwas bisher nur bei Uploads, und glaub auch nicht, dass das bei Downloads Einfluss hat...

Wenn ich da falsch lieg, klärt mich auf ;)
 
Wenn man die Zeile:
PHP:
$extension = $extget[1];
wie folgt ändert:
PHP:
$extension = $extget[(sizeof($extget)-1)];
wird es auch keine Schwierigkeiten beim Verwenden mit Dateien mit mehr als einem Punkt geben.
 
@Lars: Ziemlich sicher:

Dein Script liest ein paar Kilobyte aus der Datei und schickt sie an den Browser und wartet dann eine Sekunde.
Das Script wird also so lange ausgeführt, bis die Datei vollständig an den Client geschickt wurde.

max_execution_time bedeutet: So lange wartet der PHP-Interpreter, bis er das Ausführen des Scriptes abbricht.
Da nun ein Download schnell mehr als 30 Sekunden dauern kann, wird er folglich früher abgebrochen!
 
Hm,
ich kannte das bisher nur von Uploads,
es erscheint aber auch recht logisch.

Also hat so ein Script nur sinn,
wenn man die max_execution_time selbst setzen kann.
 
Zurück