Internetanbindung des Users herausfinden

  • PHP

  • wurstfabrik
  • 1449 Aufrufe 9 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Internetanbindung des Users herausfinden

    Mal wieder ein dickes Hallo an euch !

    Ich bin eigentlich auf der Suche nach einer Möglichkeit, die Verbindungsgeschwindigkeit des Users herauszufinden, der die Seite aufruft. Einen Ansatz habe ich mir auch schon mal überlegt:

    PHP-Quellcode

    1. <?php
    2. $time_start = microtime(get_as_float);
    3. // ...
    4. //Scriptablauf
    5. // ...
    6. $time_end = microtime(get_as_float);
    7. $ablaufzeit = $time_end - $time_start;
    8. ?>

    im Sriptablauf müsste man nun eine datei von meinetwegen genau 100kB geladen werden, dann könnte man anhand der ablaufzeit bestimmen, wie schnell der Transfer gelaufen ist.
    Meine Frage ist: was für eine Datei lass ich da am besten Laden und wie mach ich das am besten ?!

    Bin für jede Hilfe dankbar
    MfG
    wurst
  • Kannst ja eine Datei die genau 102400 Zeichen enthält ladenlassen ;)
    Damit du nicht immer ausprobieren musst, kannst du ja dafür

    PHP-Quellcode

    1. <?php
    2. for($x=1;$x=102400;$x++) echo "0";
    3. ?>

    ausführen lassen ;)
  • Hi,

    aber die genaue Bestimmung wird ja dadurch auch nicht möglich sein .

    Kann man das nicht per Cookies abfragen ??

    Welchem Zweck dient das denn mit der Anbindungsabfrage ???

    Mfg

    Icseb
  • Hi Luete, danke erstma für die prompte Antwort !

    @ BloodVortex:
    ja, an sowas dacht ich ja auch, nur wie kriegt man es hin, dass der browser davon nix anzeigt - was für Zeichen am besten nehmen ? geht dass, wenn ich die 102400 Bytes in ein kommentar setze ? Quasi so:

    PHP-Quellcode

    1. <?php
    2. echo "<!--";
    3. for($x=1;$x=102400;$x++) echo "0";
    4. echo "-->";
    5. ?>


    @Icseb:
    ganz genau muss ichs ja auch nicht bestimmen können, aber ist doch davon auszugehen, dass wenn jemand mit mehr als 64kbit zieht mindestens DSL hat usw
    dienen solls mir eigentlich erstmal nur als statistischer wert, und vielleicht will später ne page für low-bandwidth besucher machen, die graphisch weniger aufwändig ist

    MfG
    wurst
  • Na ich meinte eigentlich, dass du die ganzen zeichen in eine Datei machst und diese dann mit include aufrufst. Das mit dem PHP-Code sollte dir nur vereinfachen genau 102400 Zeichen zu bekommen ;)

    Sprich du fürst erst die 102400 Zeichen-for-Schleife aus und dann mach ein Datei von mir aus "100kb.php" und schreibst da die Nummern via Kommentar rein ;)
    Dann einfach im hauptprogramm ein include '100kb.php'; und schon müsste er 100kb laden. Aber leider hab ich das nicht ausprobiert :(

    Wenn du die for-schleife arbeiten lässt gibt es ja auch verzögerung, darum würde ich deine Variante nicht so gut finden. Außerdem sieht das ja dann im Quellcode sch**ße aus :P

    Gruß
    BloodVortex
  • naja aber wenn du die datei includest, dann wird die ja quasi auch mit einbezogen, dann muss die ja auch irgendwas machen - und wenn du sie nur z.b. als PHP-kommentar einbindest, dann wird sie ja nicht zum client übertragen, weil der PHP-code ja nur aufm server ausgeführt wird - also müsste sie als html-kommentar mit echo ausgegeben werden, meinetwegen dann auch in der extra-datei:

    PHP-Quellcode

    1. <?php // 100kb.php
    2. echo "<!-- 000....000 -->";
    3. ?>

    würd dann nur trotzdem im quelltext stehn ... werde das heut abend mal testen, ich kann ja dann berichten ob und wie es funktioniert !
    hat denn noch wer andere möglichkeiten ?

    MfG
    wurst
  • Hi wurst !

    Ich weiß nicht ob du deine Versuche schon getestet hast , ich habe mich mal damit beschäftigt....
    Erstmal folgenden Quellcode:

    PHP-Quellcode

    1. <?php
    2. function microtime_float()
    3. {
    4. list($usec, $sec) = explode(" ", microtime());
    5. return ((float)$usec + (float)$sec);
    6. }
    7. $time_start = microtime_float();
    8. include("100kb.php");
    9. $time_end = microtime_float();
    10. $usedtime = $time_end-$time_start;
    11. $speed = 100/$usedtime;
    12. echo "100kB wurden in $usedtime Sekunden geladen.<br>";
    13. echo "Dies entspricht einem Speed von ".$speed."kB/s";
    14. ?>
    Alles anzeigen


    Bei mir funktioniert es wunderbar, liege immer so bei 120 Kb/s , da ich ja DSL1000 habe :)
    Kannst es ja mal bei dir testen und ne Antwort schreiben wie du es findest :)

    Greets
    $Newbie$
  • hmmm ... leute ich glaube ihr habt da einen kleinen denkfehler!!
    das was ihr da codet spielt sich nur am server ab, das hat mit der clientverbindung absolut gar nichts zu tun!!
    das was ihr in euren code-snippets herausfindet, ist wie schnell der server eine 100kB datei oeffnet oder wie schnell er eine schleife 102400 mal durchlaeuft!!
    um die clientverbindung herauszufinden, muesst ihr ne 102400kB grosse datei zum client (browser) schicken und dann das ergebnis auswerten!

    ONLINE DEMO: http://mexxem.me.funpic.de/FSB/speedtest.php

    PHP-Quellcode

    1. <?php
    2. function microtime_float() {
    3. list($usec, $sec) = explode(' ', microtime());
    4. return ((float)$usec + (float)$sec);
    5. }
    6. import_request_variables('G', '_');
    7. if (!isset($_timeStart)) {
    8. $timeStart = microtime_float();
    9. include('speedtest.html'); // datei mit groesse ca. 102400 Bytes
    10. echo '<script>location.href="speedtest.php?timeStart='.$timeStart.'"</script>';
    11. } else {
    12. $timeUsed = microtime_float()-$_timeStart;
    13. $speed = 100/$timeUsed;
    14. echo '102400 Bytes wurden in '.$timeUsed.' Sekunden geladen.<br />';
    15. echo 'Dies entspricht einem Speed von '.$speed.'kB/s';
    16. } // END if
    17. ?>
    Alles anzeigen


    leider ist auch dieses ergebnis niemals genau, da zuerst eine datei (speedtest.php :: schicke daten) vom server angefordert wird, dann die datei (speedtest.html 102400kB) geschickt wird, dann nochmal eine datei (speedtest.php :: auswerten) angefordert wird und dann erst das ergebnis am browser ausgegeben wird!

    hoffe mich verstaendlich genug ausgedrueckt zu haben!?

    ceeyaa.mex
  • Moin erstma, MeX und $Newbie$ !
    Sorry, hatte gestern nicht so viel Zeit und bin daher nich gekommen, meine Ergebnisse zu Posten, habs aber eigentlich so versucht wie $Newbie$, und ich denke mal, meine Ergebnisse passen eigentlich ... das Script von ihm hab ich auch mal auf meinem Funpic laufen lassen und hab das ein paar mal ausgeführt, war eigentlich ziemlich überzeugt, auch nachdem ich ne Freundin das ausführen lassen hab, die ISDN hat und 1-2kB/s als Ergebnis bekam (sie hat nebenbei noch was gezogen)...
    Aber ich muss sagen, dass mich MeX's Methode noch ein wenig überzeugender finde (sorry, $Newbie$ ;))
    Also, erstmal schönen Dank an euch beide und auch an BloodVortex und Icseb für eure Hilfe, die mich wieder mal ein wenig weitergebracht hat in meinen PHP-Kenntnissen !
    Vielen Dank !!
    MfG
    wurstfabrik