Userinternetgeschwindigkeit
Ferret
- programmiertechnik
0 Ferret0 Ferret
0 Helmut Weber0 Ferret0 Helmut Weber0 Ferret
0 e70 Struppi
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...
...
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
Ich bin doch echt sch****... ;-)
Link vergessen *gg*
http://www.torrero.de/index2.html
(Der Quadratische Kasten oben rechts)
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
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 ;-)
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:
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
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!
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...
Hallo
- 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...
- 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
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
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...
Hallo,
- 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
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
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...
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
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
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
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
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
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.
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 ;-)
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.
...
woher weißt du eigentlich, wo ich immer grad hängenbleib???
Echt faszinierend ;-)
binja schon dabei *gg*
Vielen Dank!
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
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.
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
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
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=0wohl "besser", damit der IE auch ja nicht auf
die Idee kommt, Probleme zu machen.
Muesste ueberfluessig sein. Die Angaben sind
aequivalent.
Gruesse,
CK