Výsledky 1 až 7 z 7

Téma: [PHP] nebo [JS]:jak napsat simple test rychlosti pripojeni

Threaded View

Předcházející příspěvek Předcházející příspěvek   Další příspěvek Další příspěvek
  1. #5

    Standardní Re: [PHP] nebo [JS]:jak napsat simple test rychlosti pripojeni

    Lepší je toto řešení, ale může být nepřesné, protože každý prohlížeč zpracovává příchozí data jinak (nastavení bufferu pro flush je pokaždé jiné). Také záleží na vytížení odchozí linky serveru a serveru samotného (což ale nebude takový problém u měřených linek do řekněme 50MBit/s). Soubor index.php spustí test a soubor rychlost.php zobrazí výsledek. Ve výsledku je flash graf, ale ten samozřejmě být nemusí. V příloze posílám všechny soubory testu. Měří se pouze rychlost downloadu.

    Princip je takový, že se nejprve změří krátkým testem základní schopnost linky. Podle toho se nastaví hlavní test (velikost stahovaných dat). Zaznamená se čas startu a pošlou se data ke klientovi. Po dokončení posílání se zaznamená čas odeslání. Rozdíl v čase se spočítá s velikostí dat a zobrazí se rychlost downloadu.

    Vyzkoušet si to můžete na stránce http://rychlost.mysoft.cz

    soubor: index.php

    Kód:
    <font face="verdana" color="navy"><?php
    $kb=rand(2048,5120);
    echo "streaming $kb kB...<br><!-";
    flush();
    $time = explode(" ",microtime());
    $start = $time[0] + $time[1];
    for($x=0;$x<$kb;$x++){
        echo str_pad('', 1024, '.');
        flush();
    }
    $time = explode(" ",microtime());
    $finish = $time[0] + $time[1];
    $deltat = $finish - $start;
    echo "-> Test finished in $deltat seconds. Your speed is ". round($kb / $deltat, 3)."kB/s<br>";
    $vysledek=round($kb / $deltat, 3);
    
    // hlavní kolo
    $kb=25*$vysledek;
    if ($kb>50000):$kb=50000; endif;
    echo "streaming $kb kB...<br><!-";
    flush();
    $time = explode(" ",microtime());
    $start = $time[0] + $time[1];
    for($x=0;$x<$kb;$x++){
        echo str_pad('', 1024, '.');
        flush();
    }
    $time = explode(" ",microtime());
    $finish = $time[0] + $time[1];
    $deltat = $finish - $start;
    $vysledek=round($kb / $deltat, 3);
    $vysledek=$vysledek*8; // převod z kB na kb
    echo "-> Test finished in $deltat seconds. Your speed is ". round($kb / $deltat, 3)."kB/s<br>";
    echo "Speed is <font size=5 color=green><b>$vysledek kbps</b></font><br>";
    
    include "./rychlost.php";
    ?></font>
    soubor rychlost.php
    Kód:
    <!--[if !IE]> --> 
    <br>WWW Prohlížeč: jiný, než IE.<br>
    <object type="application/x-shockwave-flash" data="./tachak.swf?vysledek=<? echo $vysledek;?>" width="400" height="400"> 
    <!-- <![endif]--> 
    <!--[if IE]>
    <br>WWW prohlížeč: Internet Explorer.<br>
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
    codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"
    width="400" height="400">
    <param name="movie" value="./tachak.swf?vysledek=<? echo $vysledek;?>" />
    <!--><!----> 
    <param name="loop" value="false" /> 
    <param name="menu" value="false" /> 
    <param name="wmode" value="transparent" /> 
    <param name="bgcolor" value="#ffffff"> 
    </object> 
    <!-- <![endif]-->
    Přiložené soubory Přiložené soubory

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •