Verbindungsgeschwindigkeit herausfinden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verbindungsgeschwindigkeit herausfinden

    Hi,

    hab grad auf der Seite eines Tracking-Scripts gesehen, das dieses die Geschwindigkeit der Internetverbindung des Users mitausgibt.

    Wie kann ich sowas realisieren ?


    DANKE!
    protaction² - protection in action -
    [color=blue]die community für inline-skater, skateborder, kickboard und classic skater[/color]

    www.protaction2.de

  • #2
    theoretisch: schicke ne datei an den user und schau wie lange es dauert.. (up und download)

    praktisch: was, wenn der user nebenbei was anderes runterlädt?

    Kommentar


    • #3
      Eine genaue Anzeige wirst du nicht hinbekommen. Da spielen wie gesagt zu viele Faktoren eine Rolle. Up/Downloads, dein eigener Server, ...

      Kommentar


      • #4
        Aber ungefähr
        PHP-Code:
        <?php  
        // Bandbreitentest
        $execute++;
        if (!
        $StringTimes) {
            
        $StringTimes 8;             // Multiplikator für 1kByte Zufallstring
                                        // hier Wert 8 für 8 kByte Startwert zum Bandbreitentest
        }

        $StringTimes $StringTimes $execute

        // Erzeugen eines Zufall Strings, Basislänge = 1024 Byte, die in der Folge,
        // je nach Multiplikator ($StringTimes) vervielfacht wird.
        $RandStr     GetTestString(1024);
        $RandString $RandStr;
        for(
        $i=1;$i<$StringTimes$i++){
            
        $RandString .= $RandStr;
        }

        $TestSize strlen($RandString) + 85;
        // 85 ist jene Länge des JavaScript Codes der addiert werden muß
        // beginnend nach
        //   var GO = new Date();
        //                       +-- ab hier
        // bis inklusive
        //   var STOP = new Date();
        //              bis hier --+
        // unten weiter im Code

        header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
        header ("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");  
        header ("Cache-Control: no-cache, must-revalidate");
        header ("Pragma: no-cache");
               
        print 
        '
        <HTML>
        <HEAD>
        <TITLE>Test der Bandbreite</TITLE>
            <META http-equiv="expires" content="0">
        </HEAD>
        <BODY>
        <p>Test #'
        .$execute.' mit '.number_format($TestSize/10240',''.').
        ' kByte Daten '.number_format($interval2',''.').
        ' Sekunden<br><br>
        '
        ;

        function 
        GetTestString($size){
            
        // Erzeugt Zufall String
            
        srand ((double) microtime() * rand(100000,1000000) / rand(1,15));
            for(
        $i=0;$i<$size$i++){
                
        $string .= chr(rand(33,255));
            }
            return 
        $string
        }

        function 
        CalculateBandwidth($interval){
            global 
        $TestSize;
            global 
        $execute;
            if (
        $interval 0) {
                
        $unit_bs "kBit/Sekunde";
                
        $LS    = (($TestSize 1024 ) * ) / $interval;
                if (
        $LS >= 1024) {
                    
        $unit_bs "MBit/Sekunde";
                    
        $LS $LS 1024;
                }
                
        $LS number_format($LS0',''.');
                
        $speed  "<p>Übertragungsrate (Download): <b> $LS $unit_bs</b>";
            }
            return 
        $speed;


        $makeagain 1;
        if (
        $interval) {
            if (
        $interval >  || $execute 60) {
                
        // Wenn auf LOCALHOST getestet wird muß der Loop begrenzt werden
                // ansonsten dauert es ewig bis das Interval > 1 Sekunde erreicht wird
                // bis 100 MBit und mehr inkrementiert sind dauert, das dauert ...
                
        print CalculateBandwidth($interval);
                
        $makeagain 0;
            }
        }
        if (
        $makeagain != 0) {
            
        // Jetzt senden wir den Zufallstring an den Client und messen wie lange das dauert
            
        print '
                <form method="POST" action="'
        .$HTTP_SERVER_VARS["SCRIPT_NAME"].'">
                <input type="hidden" name="interval" value="No Test">
                <input type="hidden" name="execute" value="'
        .$execute.'">
                <input type="hidden" name="mult" value="'
        .$StringTimes.'">
            </form>
            <script language="JavaScript">
                var GO = new Date();
            </script>
            <!--
            '
        ;
            print 
        $RandString// Zufallstring wird reingebastelt
            
        print '
            -->
            <script language="JavaScript">
                var STOP  = new Date();
                StopAndGo = (STOP.getTime() - GO.getTime()) / 1000;
                document.forms[0].elements[0].value=StopAndGo;
                // alert (StopAndGo);
                 document.forms[0].submit();
            </script>
            '
        ;
            
        // Die Zeit wurde ermittelt, dem Form übergeben und das Form gesendet
        }
        print 
        '
        <br><br>
        <a href="'
        .$HTTP_SERVER_VARS["SCRIPT_NAME"].'?execute=1&mult='.$StringTimes.'" onClick="this.innerText=\'Bitte warten ...\'">
        Zur Ermittlung der Bandbreite, klick hier.
        </a>
        </BODY>
        </HTML>
        '
        ;
        ?>

        Kommentar


        • #5
          @Hand:
          Nicht schlecht!

          Kommentar


          • #6
            @TobiaZ
            So schnell kannst es ja gar nicht ausprobiert haben
            Tipp: Schalt beim Test den Sound ein ...

            Kommentar


            • #7
              Hab mal kurz drüber geguckt. Also - wie alles bei mir - rein theoretisch. Haste n Beispiel online?

              Kommentar


              • #8
                Erstmal tausend Dank hand für die Code-Zeilen.

                Mit einer kleinen Änderung klappt es prima .

                in Zeile 109 muß es lauten

                onClick="this.innerText="Bitte warten ..."">
                , gibt ansonsten 'nen Parser-Error .


                protaction² - protection in action -
                [color=blue]die community für inline-skater, skateborder, kickboard und classic skater[/color]

                www.protaction2.de

                Kommentar

                Lädt...
                X