Wie tatsächliche Übertragungsrate zu Clients festellen

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von joedelord, 11.07.2006.

  1. joedelord

    joedelord Thread Starter MacUser Mitglied

    Beiträge:
    481
    Zustimmungen:
    0
    MacUser seit:
    12.12.2002
    Hallo Liebe Macuser,

    Im heutigen Thema geht es um eine (noch, genaueres unten) eher theoretische Frage;

    Wie kann ich via PHP, von einem Server aus auf dem ganz normal Webspace gemietet wurde, die tatsächliche Übertragungsrate zu den Clients ermitteln?

    Der Hintergrund der Frage ist, dass ich in meim kommen Projekt die tatsächliche Übertragungsrate ermitteln will, um so den Content besser an die Zielgruppe anzupasse. Soweit ich weiß lässt sich auch über JS einiges in diese Richtung machen, jedoch spielgeln diese Angaben glaube ich nicht die TATSÄCHLICHE Übertragungsrate wieder.

    Also wer hat Ideen oder kennt tools mit denen man diese Funktion bewerkstelligen kann.

    lg, joedelord

    PS: die Frage ist desshalb nich theoretischer Natur, da ich noch keinen Webspace gemietet habe. Das passiert erst kurz vor dem Start etwa mitte August.
     
  2. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    Hier gibt's ne Seite mit Speedtests. Die sollten Dir zeigen, was möglich ist, dann kannst Du Dich genauer informieren.

    Meines Erachtens sind die immer sehr ungenau.
     
  3. joedelord

    joedelord Thread Starter MacUser Mitglied

    Beiträge:
    481
    Zustimmungen:
    0
    MacUser seit:
    12.12.2002
    Vielen Dank soeweit dafür, bloß wie kann ich selbst so einen Test implementieren (Abgesehen von einer Flash Lösung) am besten mit php.

    lg, joedelord
     
  4. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    MacUser seit:
    02.09.2004
    Wie schon angemerkt: Es ist zum einen ungenau zum anderen könnte eine solche Messung die Leute eher nerven als ihnen nützen.

    Nur so ´ne Idee: Wenn der Server den Systemruf gettimeofday() kennt, bzw. die PHP-Version die microtime() Funktion unterstützt, könntest Du die Zeit in Mikroskunden zwischen zwei Seitenanforderungen folgendermaßen messen und den Durchsatz leicht berechnen:

    HTML:
    <?php
    //------------------------------------------------------------
    // index.php
    //------------------------------------------------------------
    $millis=microtime();
    ?>
    <html>
    
    <!-- Inhalt bekannter Groesse Start -->
    <head><title>Hallo</title></head>
    <body>
    
    <form name="perf" method="POST" action="test.php">
    <input type="hidden" name="value" value=<?php print("\"".$millis."\""); ?> > 
    </form>
    
    <!-- Inhalt bekannter Groesse Ende -->
    
    <script type="text/javascript">document.forms.perf.submit()</script>
    </body>
    </html>
    
    HTML:
    <?php 
    //------------------------------------------------------------
    // test.php
    //------------------------------------------------------------
    $now=explode(' ',microtime());
    $difftime=-1;
    if ( isset ( $_POST['value'] )) 
    { 
    	$start = explode(' ',$_POST['value']);
    	$usec = $now[0]-$start[0];
    	$sec = $now[1]-$start[1];
    	
    	if ( $usec < 0 )
    	{ 
    		$sec--; 
    		$usec = -$usec;
    	}
    	
    	$difftime=$sec+$usec;
    }
    
    //------------------------------------------------------------
    // ab hier z. B. automatische Weiterleitung...
    //------------------------------------------------------------
    ?>
    
    <html>
    	<head><title>test</title></head>
    	<body>
    		<?php echo htmlentities ($difftime); ?>
    	</body>
    </html>
    
    Vielleicht liesse sich das auch in ein unauffälliges Frame auf der Seite packen, so dass die Zielgruppe die Messung gar nicht mitbekommt.
     
    Zuletzt bearbeitet: 12.07.2006
  5. joedelord

    joedelord Thread Starter MacUser Mitglied

    Beiträge:
    481
    Zustimmungen:
    0
    MacUser seit:
    12.12.2002
    Die Idee finde ich schon sehr gut, aber...

    Wird damit nicht nur die Zeit berechnet die der Parser braucht, und die Datei zu parsen und in den Ausgangspuffer zu schreiben? Ich habe leider nur rudimentäre Kenntisse von der Apache Arbeitsweise, weshalb meine Fragen vielleicht etwas substanzlos sind.

    Vielen dank, das bringt mich dem Ziel schon ein bischen näher ... this is one smal step for a man, but one big leap für mich!

    lg, joedelord
     
  6. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    MacUser seit:
    02.09.2004
    Was da im Detail passiert:
    1. Server erhält HTTP-Request und merkt sich Zeitpunkt (Systemzeit/UNIX-Timestamp auf Server).
    2.) Server schickt Daten mit bekannter Größe, u.a. "verstecktes" Formular mit Systemzeit aus 1.) als Parameter und Sendescript als letztes "Kommando".
    3.) Client schickt gezwungenermaßen Formular sofort zurück.
    4.) Server empfängt Formular von Client und kann Zeitdifferenz berechnen.

    Der ermittelte Zeitraum ist die benötigte Zeit für die Übertragung. Klar ist, dass das sehr ungenau ist und nur grobe Rückschlüsse auf die Übertragungskapazität zulässt.

    Aber klappen tut das grundsätzlich.
     
  7. PowerBookGrafik

    PowerBookGrafik MacUser Mitglied

    Beiträge:
    812
    Zustimmungen:
    5
    MacUser seit:
    12.03.2005
    mir würde nur einfallen ein 1x1 pixel flash kurz laufen zu lassen mit sagen wir einer 300kb datei drinnen ... er stoppts die zeit mit die flash braucht um diese 300kb zu laden und errechnet sich dadurch die rate zum clienten und übergibt per post oder get die daten an das nächste php file das dies dann verwerten kann
     
  8. joedelord

    joedelord Thread Starter MacUser Mitglied

    Beiträge:
    481
    Zustimmungen:
    0
    MacUser seit:
    12.12.2002
    Die Flashlösung scheint mir auch die einfachste, vor allem ist sie vom Server unabhängig. Einziges Problem... ich habe leider keine Flashlizenz, und nur dafür die ca 250 Aufpreis zum Adobe Web Studio Edu Packet wollte ich mir nicht leisten.

    Weitere Frage; (sehr utopisch ich weiß. Es geht aber nur um das Konzept)
    Wenn mich irre werden Bilder im zuge eines eigenen HTTP-Request übertragen. Wenn es nun gelänge die Zeit zu bestimmen die für die Übertragung eines Bildes aufgewandt wird könnte man so doch auf die Übertragungsrate schließen. Wobei sich wiederum die Frage ergiebt ob moderne Browser immer ein Bild nach dem anderen anfordern oder ob diese Request parallel laufen?

    lg, joedelord
     
  9. der_Kay

    der_Kay MacUser Mitglied

    Beiträge:
    1.693
    Zustimmungen:
    7
    MacUser seit:
    02.09.2004
    Ich glaube, unsere Auffassungen von "Einfachheit" sind stark divergent. ;) Für das bisschen Messung einen Flash-Server?

    Das funktioniert genau einmal, denn Browser cashen meist die Bilder.

    Das lässt sich machen, indem Du den Browser indirekt veranlasst, die Bilder vorzuladen, z. B. indem Du sie in einem JavaScript-Array referenzierst. Das könntest Du wunderbar in meinem simplen Script unterbringen... ;)

    Wenn Du höheren Aufwand betreiben willst, schreib ein Java-Applet. Das kann die Zeit millisekundengenau messen und könnte sogar cool aussehen und sinnvolle Inhalte einblenden.
     
    Zuletzt bearbeitet: 14.07.2006
Die Seite wird geladen...
Ähnliche Themen - tatsächliche Übertragungsrate Clients
  1. newmedia
    Antworten:
    4
    Aufrufe:
    1.476

Diese Seite empfehlen