[PHP] Maximale Downloadgeschwindigkeit

Dieses Thema im Forum "Webentwicklung" wurde erstellt von MrMuhKuh, 5. Juli 2007 .

Schlagworte:
  1. 5. Juli 2007
    Maximale Downloadgeschwindigkeit

    hi, hab ne frage zum thema downloadgeschwindigkeit:

    ich hab hier nen server. jetzt kommt ein user und will downloaden, aber ich moechte nicht dass er mit voller bandbreite ziehen darf. d.h. statt mit 300kb/s nur auf max 50kb/s. ist das mit php regelbar? oder apache?
    (windowsserver ggf. linux server)
     
  2. 5. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    Hoi,
    mit php geht sowas nur umständlich bis gar nicht. Für Apache2 gibts ein paar Module die sowas beherschen. [G]Apache bandwith ip[/G] Findet man Sachen wie mod_cband (dafür gibt es auch ein Debian Paket).

    Ansonsten mal lighttpd anschauen. (Wikipedia betreibt zum Teil seine upload/download mit lighttpd.) Zum Beispiel dürfte das [link] für dich interessant sein, da dort der Speed über php gesteuert werden kann. (Müsstest nur mehrfache Connections ausschließen) Gibt aber auch noch Module die andere Möglichkeiten bieten.

    Ob Windows oder Linux ist eigentlich egal, Hauptsache du bekommst die Module entsprechend compiliert. Linux bietet sich an, weil es unter den Bedingungen häufiger eingesetzt wird.

    greetz blackbone
     
  3. 5. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    siehe
    Anthony C Howe - Snert - Bork Bork Bork! - Firefox & Thunderbird Extension
    (Entwickler von mod_throttle)

    Sonst hätte ich das mit vorgeschlagen. xD


    greetz blackbone :]
     
  4. 6. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    PHP:
    <? php
    $limit 
    5 // Hier gibt man ein, wie viel Kilobyte pro Sekunde max. geladen werden dürfen.
    $verzeichnis  "/www/htdocs/mamonede/downloads" // Downloadverzeichnis (ohne abschließenden "/")
    $rundeslimit  round ( $limit * 1024 );  // Kilobytewert in Byte umrechnen

    switch ( $_GET [ 'id' ]) {  // die per ?id=X übergegebene ID wird der Datei zugeordnet

    case  0 // die einmalige ID
    $file  "file1.zip" // die zu ladene Datei bei ID 0
    break;
    // Die obigen 3 Zeilen können beliebig oft wiederholt werden (ID anpassen!)

    case  1 :
    $file  "datei2.rar" // die zu ladene Datei bei ID 1
    break;
    case 
    2 :
    $file  "programm3.exe" // die zu ladene Datei bei ID 2
    break;

    // und so weiter. Beliebig viele Downloads hinzufügbar
    }

    header ( "Cache-control: private" );
    header ( "Content-type:  $sendmime " ); 
    header ( "Content-Length: " . filesize ( $verzeichnis . "/" . $file ));
    header ( "Content-Disposition: attachment; filename=" $file "" ); 
    // Attachementheader senden

    flush ();
    $fd  fopen ( $verzeichnis . "/" . $file "r" );
    while(!
    feof ( $fd )) {
    echo 
    fread ( $fd $rundeslimit );
    flush ();
    sleep ( 1 );
    }
    fclose  ( $fd );
    // Die Speed-Sperre wird geschaltet
    ?>

    Die Downloadgeschwindigkeit liegt beim Anfang des Downloads etwa bei der doppelten Geschwindigkeit und wird erst langsam auf die gwünschte Geschwindigkeit gedrosselt.

    Quelle: MaMo Net &raquo; Forum &raquo; Webdesign & Programmieren &raquo; PHP: Downloadgeschwindigkeit begrenzen

    Nicht geprüft.

    MfG
     
  5. 6. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    Wobei du den switch Kram gar nicht brauchst.
    Reicht ja schon, dass du immer nach 1 MB oder 1 GB oder 10 MB oder 10 KB oder whatever 1 Sekunde wartest bevor du die nächste Zeile / das nächste Segment der Datei ausgibst...
     
  6. 6. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    @cydoc: und was passiert, wenn ich die datei ohne dein skript runterlade?
     
  7. 6. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    hehe...

    gut gemerkt...

    das müsste sich aber mit chmod (700??) bzw. mit ner htaccess richten lassen...
     
  8. 7. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    PHP:
      $file  "die datei" // Url zur Datei
      
    $throttle  20 // Die Geschwindigkeit
      
      
    header ( "Content-Type: application/octet-stream" );
      
    header ( "Content-Disposition: attachment; filename=\"die datei\"" );
      
    header ( "Cache-Control: no-cache" );
      
    header ( "Pragma: no-cache" );
      
    header ( "Expires: 0" );
      
    header ( "Content-Length: " .(string)( filesize ( $file )));

      
    $fp  fopen ( $file , 'r' );
      while(!
    feof ( $fp )) {
        
    $buffer  fread ( $fp 1024  $throttle );
        
    sleep ( 1 );
        print 
    $buffer ;
      }
      
    fclose ( $fp );

      
    header  ( "Connection: close" );
    so kann man übrigens auch einen kleinen schutz einbauen, um hotlinking zu verhindern!
     
  9. 8. Juli 2007
    AW: Maximale Downloadgeschwindigkeit

    1. es ist nicht mein Script
    2. es ist eine antwort auf die frage, nichts weiterdenkendes
    3. dann lädst du sie mit fullspeed aber da die frage so konkret nicht war, war dieser lösungsansatz hilfreich für die frage.
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.