Ferret: Userinternetgeschwindigkeit

Hallo zusammen,

Ich habe ein Script programmiert, bei dem ich innerhalb kürzester Zeit Bilder laden muss.
Bilder mit 10k werden mit DSL Zugang schnell genug für die Anwendung geladen... aber die 56k-Leute, hätten gar nix davon... im Gegenteil, die würden denken, da sind Fehler in der Programmierung.

Jetzt die Frage:
Kennt jemand ne Möglichkeit, auszulesen, mit welcher Geschwindigkeit mein User online ist?
Egal, ob mit JavaScript, Perl oder SQL(wie auch immer)

Und ein preload der Bilder is nicht drin...

--
MfG aus Augschburg,
Ferret
  1. ...

    um euch ne bessere Vorstellung machen zu können, wie die Anwenung ausschaut, könnt ihr die ja mal anschaun...
    könnt ihr mir dann gleich sagen, ob die bei euch schnell genug lädt; und welche Geschwindigkeit ihr habt?
    Ich hab leider nur die Möglichkeit, das mit DSL anzuschaun...

    Danke

    --
    MfG aus Augschburg,
    Ferret
    1. Ich bin doch echt sch****... ;-)

      Link vergessen *gg*

      http://www.torrero.de/index2.html
      (Der Quadratische Kasten oben rechts)

      --
      MfG aus Augschburg,
      Ferret
  2. Hallo Ferret,

    Die tatsächliche Geschwindigkeit, mit der ein Benutzer gerade im Internet unterwegs ist, hängt nicht nur vom Zugang (DSL, ISDN, Analog usw.) ab!
    Gehen mehrere Benutzer über einen Zugang online, reduziert sich natürlich die Geschwindigkeit. Ebenso reduziert sich die Geschwindigkeit, wenn der Benutzer neben deiner Website noch andere Aktivitäten im Internet nachgeht.

    Ich würde den Ideenwürfel entweder rein mit JavaScript oder mit Flash lösen. Den Bilderpool kannst Du ja per PHP, Perl o.ä. zusammenstellen.

    Zu deinem Würfel:
    Irgendwie fehlt ein 3D-Effekt, um den Würfel als solchen auch klar erkennen zu können.

    Gruß
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Hallo

      Die tatsächliche Geschwindigkeit, mit der ein Benutzer gerade im Internet unterwegs ist, hängt nicht nur vom Zugang (DSL, ISDN, Analog usw.) ab!
      Gehen mehrere Benutzer über einen Zugang online, reduziert sich natürlich die Geschwindigkeit. Ebenso reduziert sich die Geschwindigkeit, wenn der Benutzer neben deiner Website noch andere Aktivitäten im Internet nachgeht.

      Das weiß ich, aber ich!
      Das das ist ja auch gut so.
      so kann ich, wenn einer mal ne echt schlechte Verbindungsgeschwindigkeit (trotz e.g. DSL) den Würfel ausblenden.

      Ich würde den Ideenwürfel entweder rein mit JavaScript oder mit Flash lösen. Den Bilderpool kannst Du ja per PHP, Perl o.ä. zusammenstellen.

      Im grunde mach ich das doch!
      Der Würfel ist NUR mit Javascript animiert und die Bildpfade/Links lade ich aus ner Datenbank, was den Vorgang nicht verlangsamt!

      Zu deinem Würfel:
      Irgendwie fehlt ein 3D-Effekt, um den Würfel als solchen auch klar erkennen zu können.

      Das ist nicht so wichtig.
      Es geht um den Blickfang, den er meiner Meinung nach erreicht und dann erkennt man das auch!

      Danke ;-)

      --
      MfG aus Augschburg,
      Ferret
      1. Hallo Ferret,

        Der Würfel ist NUR mit Javascript animiert und die Bildpfade/Links lade ich aus ner Datenbank, was den Vorgang nicht verlangsamt!

        Dann musst Du alle notwendigen Bildern vorausladen, und nicht erst bei der ersten Darstellung.

        Falls Du doch unbedingt einen Messwert haben möchtest, kann ich mir folgendes Vorstellen:

        • Beim Laden der Startseite Session und Zeitstempel speichern
        • im <body>-Tag per onload den Server neu kontaktieren (Per Frame oder Popup o.ä.)
        • Den Zweitwert des neuen Kontaktes mit dem alten Zeitstempel der Session auswerten.

        Fällt mir gerade so ein. Würde mich jedoch nur für Testzwecke mal reitzen das auszuprobieren. In einem Projekt würde ich mich mit solchen Spielchen nicht aufhalten.

        Gruß
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
        1. Hallo

          Dann musst Du alle notwendigen Bildern vorausladen, und nicht erst bei der ersten Darstellung.

          Wenn ihr beide der Meinung seid, dann mach ich das doch ;-))

          Falls Du doch unbedingt einen Messwert haben möchtest, kann ich mir folgendes Vorstellen:

          • Beim Laden der Startseite Session und Zeitstempel speichern
          • im <body>-Tag per onload den Server neu kontaktieren (Per Frame oder Popup o.ä.)
          • Den Zweitwert des neuen Kontaktes mit dem alten Zeitstempel der Session auswerten.

          Ja irgendwie an sowas hab ich gedacht, konnte mir bloß absolut nicht, vorstellen, wie ich sowas umsetzen könnte...

          Fällt mir gerade so ein. Würde mich jedoch nur für Testzwecke mal reitzen das auszuprobieren. In einem Projekt würde ich mich mit solchen Spielchen nicht aufhalten.

          Boah cool, danke schön.
          Wär echt nett von dir!

          --
          MfG aus Augschburg,
          Ferret
  3. Hi,

    1. wie wär's mit Vorladen mittels <img>?
    2. Schau einfach nach, ob in der IP irgendwas mit "dsl" steht (ich geb zu, relativ unsicher, aber eine Möglichkeit). Und selbst wenn mit DSL mehrere Nutzer ins Netz gehen, ist die Geschwindigkeit im Normalfall noch schnell genug.

    E7

    PS: Mit Standleitung klappt's übrigens wunderbar...

    1. Hallo

      1. wie wär's mit Vorladen mittels <img>?

      Das ist noch nicht die fertige Version.
      Da kommen irgendwann maximal 12 Banner rein, und nicht irgendwelche Firmenlogos.
      Da dauert ein preload zu lang und lohnt sich für so kleine Bilder auch nicht.
      Da dauert das Laden aus dem Cache genauso lange...

      1. Schau einfach nach, ob in der IP irgendwas mit "dsl" steht (ich geb zu, relativ unsicher, aber eine Möglichkeit). Und selbst wenn mit DSL mehrere Nutzer ins Netz gehen, ist die Geschwindigkeit im Normalfall noch schnell genug.

      In der IP`???
      Ne IP besteht nur aus Nummern und wird vom Provider wahllos zufällig verteilt.
      Da kann doch kein DSL drin stehen.

      PS: Mit Standleitung klappt's übrigens wunderbar...

      Danke

      --
      MfG aus Augschburg,
      Ferret
      1. Hallo Ferret,

        In der IP`???
        Ne IP besteht nur aus Nummern und wird vom Provider wahllos zufällig verteilt.

        Anhand der IP kannst Du jedoch den Einwahlknoten feststellen. Und dort steht laut e7 manchmal der Zusatz 'dsl' drin.

        Gruß
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
        1. Hallo

          Anhand der IP kannst Du jedoch den Einwahlknoten feststellen. Und dort steht laut e7 manchmal der Zusatz 'dsl' drin.

          Wusste ich nicht, sorry!
          Aber wie soll das gehen?
          Ich kenn nur das Perl Userdaten auslesedingens von SelfHTML...

          --
          MfG aus Augschburg,
          Ferret
      2. Hallo,

        1. Schau einfach nach, ob in der IP irgendwas mit "dsl" steht
          In der IP`???
          Ne IP besteht nur aus Nummern und wird vom Provider wahllos zufällig verteilt.
          Da kann doch kein DSL drin stehen.

        In der IP-Nummer schon nicht.
        Aber im Hostname oder wie das Ding heisst.
        In PHP kriegst Du den String mit der Variablen:
        $_SERVER['REMOTE_HOST']

        Diese Variable hat oft ungefaehr folgendes Format:
        dialup127-0-0-1.provider.tld
        dsl127-0-0-1.provider.tld
        oder so...

        Das nur so zur Info - fuer Dein "Problem" solltest Du wohl eher
        die Bilder vorladen.

        Gruesse,

        Thomas

        1. Hallo Thomas,

          Aber im Hostname oder wie das Ding heisst.
          In PHP kriegst Du den String mit der Variablen:
          $_SERVER['REMOTE_HOST']

          Diese Variable hat oft ungefaehr folgendes Format:
          dialup127-0-0-1.provider.tld
          dsl127-0-0-1.provider.tld
          oder so...

          Das ist natuerlich so nicht wahr. Diese
          Umgebungsvariable ist nur dann befuellt, wenn
          HostnameLookups auf On stehen -- was bei
          vernuenftig konfigurierten Servern nicht der Fall
          ist.

          Gruesse,
           CK

          --
          Sobald dir ein Gedanke kommt, lache über ihn.
          1. Hallo,

            $_SERVER['REMOTE_HOST']
            Diese Umgebungsvariable ist nur dann befuellt, wenn
            HostnameLookups auf On stehen -- was bei
            vernuenftig konfigurierten Servern nicht der Fall ist.

            Danke fuer die Ergaenzung.
            Das steht natuerlich auch bei der Beschreibung der Variable unter
            http://www.php.net/manual/en/reserved.variables.php#reserved.variables.server
            Von dort hat es einen Link zur Funktion gethostbyaddr()
            http://www.php.net/manual/en/function.gethostbyaddr.php
            die aus der IP-Nummer den Hostname herausfinden soll.

            Fuer den konkreten Fall (d.h. die Frage von Ferret)
            ist das ganze ja sowieso nicht zu empfehlen.

            Gruesse,

            Thomas
              der nur auf zwei unvernuenftig konfigurierten Servern
              (Uni + kommerzieller Webhost) rasch in die phpinfo() geguckt hat,
              und bei beiden seinen eigenen Hostname gesehen hat...

            1. Hallo Thomas,

              [... REMOTE_HOST ...]
                der nur auf zwei unvernuenftig konfigurierten
                Servern (Uni + kommerzieller Webhost) rasch in
                die phpinfo() geguckt hat, und bei beiden
                seinen eigenen Hostname gesehen hat...

              Gut, bei der Uni wunder es mich nicht wirklich >;)
              Aber bei einem komerziellen Webhoster?! Das ist
              unglaublich, der muss echt Geld haben. Das heisst
              fuer jeden beschissenen Request *mindestens*(!!)
              einen DNS-Request, im Normalfall mehr. Das sind
              Unmengen an Traffic, die da verbraten werden. Mal
              ganz zu schweigen von der Performance, die da
              verloren geht.

              Gruesse,
               CK

              --
              Es ist uns nicht möglich, in einem Bereich unseres Lebens richtig zu verhalten, wenn wir in allen anderen falsch handeln. Das Leben ist ein unteilbares Ganzes.
              1. Hallo,

                [... REMOTE_HOST ...]
                Gut, bei der Uni wunder es mich nicht wirklich >;)

                Konkret geht es um
                http://www.id.unizh.ch/internet/services/www/phpinfo.php
                PHP Version 4.2.2 feiert schon bald seinen ersten Geburtstag.
                (Ein Kollege von mir jammert gerade rum, weil die GD kein
                GIF-Read-Support hat.)
                Aber eben, man muss zufrieden sein mit dem, was man hat...

                Das heisst fuer jeden beschissenen Request *mindestens*(!!)
                einen DNS-Request, im Normalfall mehr.

                Du meinst, fuer jeden Request?
                Selbst wenn es gar niemanden interessiert,
                was in der Variablen $_SERVER['REMOTE_HOST'] steht?
                Ist ja eigentlich logisch, woher soll die Instanz,
                die $_SERVER erzeugt, wissen, ob man es nachher braucht?

                Das sind Unmengen an Traffic, die da verbraten werden.
                Mal ganz zu schweigen von der Performance, die da verloren geht.

                Einleuchtende Argumente, die Erzeugung von REMOTE_HOST abzuschalten.
                Beim kommerziellen Webhost habe ich den Eindruck, dass die
                auf "moeglichst tolerant" konfiguriert haben:
                http://www.tiptom.ch/tests/phpssi/phpinfo.php

                btw. manche Leute raten/rieten davon ab, die phpinfo()
                zu veroeffentlichen.
                Ist es wirklich ein Sicherheitsrisiko?
                Wenn ja, warum eigentlich?

                Gruesse,

                Thomas

                1. Moin!

                  btw. manche Leute raten/rieten davon ab, die phpinfo()
                  zu veroeffentlichen.
                  Ist es wirklich ein Sicherheitsrisiko?

                  Es ist dann ein Risiko, wenn man dadurch interessante Informationen erfährt. Beispielsweise, ob ein PHP angreifbar ist, weil es eine alte Version ist. PHP 4.3.0 hat einen Sicherheitsbug mit Datei-Uploads, wenn ich mich nicht irre, der erst in 4.3.1 behoben wurde (aus demselben Grunde gibts PHP 4.2.2).

                  Zusammen mit den ganzen Pfadangaben, die drinstehen, könnte man sich da was basteln.

                  Kurz: Würdest du einem Einbrecher eine Bauzeichnung in die Hand geben, selbst wenn du wüßtest, dass die Alarmanlage undurchdringlich ist?

                  - Sven Rautenberg

                  --
                  "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
                  (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)
                  1. Hallo Sven,

                    Danke fuer die Antwort.

                    Ist [oeffentliches phpinfo()] wirklich ein Sicherheitsrisiko?
                    Es ist dann ein Risiko, wenn man dadurch interessante Informationen erfährt. Beispielsweise, ob ein PHP angreifbar ist, weil es eine alte Version ist.

                    _Diese_ Information schickt ja jedes PHP-Skript bereits im
                    HTTP-Header mit:
                    "X-Powered-By: PHP/4.3.0"
                    (Jedenfalls auf allen Servern, die ich bisher angetroffen habe.)

                    Zusammen mit den ganzen Pfadangaben, die drinstehen, könnte man sich da was basteln.

                    Auch ohne eine Moeglichkeit, Code auf dem Server selbst
                    ausfuehren zu lassen, z.B. bei einem _sehr_ lausigen Gaestebuch
                    oder so?
                    Rein dadurch, dass man einem beliebigen Skript, das Parameter
                    mit bekannten Namen entgegennimmt, eine "sehr boese Anfrage" schickt?

                    Was gibt/gab es fuer Moeglichkeiten/Ansaetze, "boeses zu tun",
                    unter den Bedingungen dass
                    a) keine GPC-Variablen ungeprueft uebernommen werden,
                       um z.B. aufs Filesystem zuzugreifen und
                    b) kein Skript vorhanden ist, das dafuer bestimmt ist,
                       eine hochgeladene Datei zu verarbeiten?

                    Ist/war es moeglich, durch eine POST-Anfrage, die eine
                    Datei hochzuladen versucht, ein Skript anzugreifen,
                    das von Natur aus gar keinen Upload verarbeitet?

                    Kurz: Würdest du einem Einbrecher eine Bauzeichnung in die Hand geben, selbst wenn du wüßtest, dass die Alarmanlage undurchdringlich ist?

                    Kommt darauf an, wie hoch und dick die Mauern sind...

                    Gruesse,

                    Thomas

                2. Hallo Thomas,

                  Das heisst fuer jeden beschissenen Request
                  *mindestens*(!!) einen DNS-Request, im
                  Normalfall mehr.

                  Du meinst, fuer jeden Request?

                  Ja.

                  Selbst wenn es gar niemanden interessiert,
                  was in der Variablen $_SERVER['REMOTE_HOST']
                  steht?

                  Das ist voellig egal. Das kann die Apache-Instanz
                  ja nicht wissen.

                  Ist ja eigentlich logisch, woher soll die
                  Instanz, die $_SERVER erzeugt, wissen, ob man
                  es nachher braucht?

                  Eben.

                  Gruesse,
                   CK

                  --
                  [random-signature:http://www.defunced.de/cgi-bin/signature.pl]
  4. Ich habe ein Script programmiert, bei dem ich innerhalb kürzester Zeit Bilder laden muss.
    Bilder mit 10k werden mit DSL Zugang schnell genug für die Anwendung geladen... aber die 56k-Leute, hätten gar nix davon... im Gegenteil, die würden denken, da sind Fehler in der Programmierung.

    Das klingt mir danch als ob du den onload Event suchst.

    var einBild = new Image();

    einBild.onload = bildFertig;
    einBild.src = URL;

    function()
    {
    alert(this.src + ' fetig.');
    }

    D.h. du kannst abfragen ob ein Bild da ist, bevor du dein Skript beginnst.

    Jetzt die Frage:
    Kennt jemand ne Möglichkeit, auszulesen, mit welcher Geschwindigkeit mein User online ist?

    Ja.

    var t1, img;
    img = new Image();
    img.onload = stopTime;

    function startTest(){
    t1 = new Date();
    img.src = 'grafik.jpg' + '?' + Math.random();
    }

    function stopTime(){
    var t2 = new Date();
    var d = t2.getTime() - t1.getTime();
    var size = this.fileSize;
    var speed = parseInt(size / d * 1000 / 1024 );
    var text = 'Es hat ' + d + ' ms gedauert, um ' + size + 'bytes zu laden. (' + speed + ' KB/s)';
    alert(text);
    }

    Das funktioniert so aber nur mit dem IE, da Netscape die Eigenschaft fileSize nicht kennst, stattdessen musst du dort einfach die Größe der Datei in Bytes angeben, die du ja weißt.

    Struppi.

    1. Hallo Struppi

      Danke schön für die scripts.
      Die Bilder lad ich schon, aber ohne JavaScript.
      einfach so... unsichtbar.
      Aber deine Lösung ist besser, weil ich mom ja einfach weiterlinke, ohne zu wissen, obs schon fertig ist.
      Werd ich gleich mal ändern!

      Danke ;-)

      --
      MfG aus Augschburg,
      Ferret
      1. Die Bilder lad ich schon, aber ohne JavaScript.
        einfach so... unsichtbar.

        ist natürlich für eine reine JS Seite nur bedingt sinnvoll.

        Aber deine Lösung ist besser, weil ich mom ja einfach weiterlinke, ohne zu wissen, obs schon fertig ist.

        eben, also erst ein Preloader in das Skript einbauen und dann die eigentliche Funktion starten.

        var bilder = new Array();

        var anzahl = XX;

        preload('bild1.jpg');
        preload('bild2.jpg');
        preload('bild3.jpg');
        ....
        preload('bildXX.jpg');

        function preload(url)
        {
        var index = bilder.length;
        bilder[index].onload = count;
        bilder[index].onerror = oops;
        bilder[index].src = url;
        }
        function count()
        {
        counter++;
        if(counter == anzahl) startHauptprogramm();

        }
        function oops()
        {
           alert('es trat ein Fehler auf, das Bild:' + this.src + 'konnte nicht geladen werden');

        }

        ... zum Beispiel.

        Struppi.

        1. ...

          woher weißt du eigentlich, wo ich immer grad hängenbleib???
          Echt faszinierend ;-)

          binja schon dabei *gg*

          Vielen Dank!

          --
          MfG aus Augschburg,
          Ferret
    2. Hallo Struppi,

      img.src = 'grafik.jpg' + '?' + Math.random();

      Nein! Das ist absoluter Humbug. Wenn du nicht
      moechtest, dass ein Bild gecached wird, dann
      schicke die entsprechenden Header (Expires: 0,
      Cache-Control: max-age=0), aber so bringst du
      hoechstens Proxies zum ueberlauf.

      Gruesse,
       CK

      --
      Descartes sagte: 'Ich denke, also bin ich.' Ich hingegen sage: 'Ich denke nicht, also bin ich.'
      1. Hallo Struppi,

        img.src = 'grafik.jpg' + '?' + Math.random();

        Nein! Das ist absoluter Humbug. Wenn du nicht
        moechtest, dass ein Bild gecached wird, dann
        schicke die entsprechenden Header (Expires: 0,
        Cache-Control: max-age=0), aber so bringst du
        hoechstens Proxies zum ueberlauf.

        Das ganze Skript ist Humbug, man kann mit JS nicht wirklich die Geschwindigkeit des Internetanschlusses testen, man bekommt lediglich irgendwelche Zahlen. Ich hoffe nicht, das jemand das einsetzt, da ich ihm ja auch eine andere Lösung gezeigt habe.

        Aber trotzdem, kann man für eine einzelne Grafik einen Header einstellen?

        Struppi.

        1. Hallo Struppi,

          Das ganze Skript ist Humbug, man kann mit JS
          nicht wirklich die Geschwindigkeit des
          Internetanschlusses testen, man bekommt
          lediglich irgendwelche Zahlen.

          Korrekt.

          Aber trotzdem, kann man für eine einzelne
          Grafik einen Header einstellen?

          <Files "datei.gif">
            ExpiresActive On
            ExpiresByType image/gif now
            Header set Cache-Controle no-cache
          </Files>

          Gruesse,
           CK

          --
          Zu wissen, was wir nicht wissen, ist die Quelle der Weisheit.
          1. Hallo Christian,

            Header set Cache-Controle no-cache

            Du meinst wohl sicher Cache-Control, oder?

            Außerdem wäre wohl ein

            Header set Cache-Control no-cache
            Header add Cache-Control max-age=0

            wohl "besser", damit der IE auch ja nicht auf die Idee kommt, Probleme zu machen.

            Viele Grüße,
            Christian

            1. Hallo Christian,

              Du meinst wohl sicher Cache-Control, oder?

              Korrekt, Tippfehler meinerseits.

              Außerdem wäre wohl ein

              Header set Cache-Control no-cache
              Header add Cache-Control max-age=0

              wohl "besser", damit der IE auch ja nicht auf
              die Idee kommt, Probleme zu machen.

              Muesste ueberfluessig sein. Die Angaben sind
              aequivalent.

              Gruesse,
               CK

              --
              Der Geist ist alles. Du wirst, was du denkst.