"We are back" « oc.at

ping beschleunigen

Tex 11.11.2001 - 11:52 3376 19
Posts

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
hat irgendjemand eine ahnung, wie man dieses script noch beschleunigen könnte:

Code: PHP
<?
for ($i=0;$i<10;$i++)
{
$host = "ping 192.168.6.".$i." -n 1 -w 5";

$xyz = `$host`;

$string = "Antwort"; 
$container = $xyz;

echo $host;
if(strstr($container,$string)) { 
echo " found it.<br>"; 
} else { 
echo " not found.<br>"; 
}

}
?>

es schaut einfach, ob 10 aufeinanderfolgende hosts vorhanden sind... es dauert ca. 4 sekunden. bei 100 hosts dauert es dann schon sehr lange. wie könnte man es beschleunigen.
Bearbeitet von Tex am 11.11.2001, 11:54

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
php is halt mal langsam... wie wärs mit ner andren umgebung? zB eine in c++ geschriebene .exe, die am server als CGI arbeitet? wär wohl schneller.

mfG
CB

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von Bimminger
php is halt mal langsam... wie wärs mit ner andren umgebung? zB eine in c++ geschriebene .exe, die am server als CGI arbeitet? wär wohl schneller.

mfG
CB

hm, in dem fall ists wohl eher die responsegeschwindigkeit des pings, der das ding verlangsamt.

um eine ping-response zu beschleunigen, kannst wohl recht wenig machen, wennst nicht gerade auf eine T3 leitung umsteigen willst.

oder du schreibst das ping proggi um, sodass die gesendeten pakete kleiner werden. ist wohl aber auch nicht sinn der sache...

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
nein, das ist wirklich php, das so langsam ist... das ganze befindet sich in einem lokalen netzwerk und über die command-line geht es viel schneller. das script soll ja in ein php-projekt eingebunden werden und so ist eine andere sprache keine gute lösung. (später soll er mir in ein drop-down-menü die vorhandenen hosts anzeigen und dann mit php weiterverarbeiten)

JonnyB

Blutiger Neubei
Registered: Mar 2001
Location: Leoben
Posts: 656
Wie wär's damit, daß Du in der for-Schleife nur die Hosts abfragst und die Adressen, von denen eine Antwort kommt, in einem Feld speicherst. Die Ausgabe machst Du dann außerhalb der Schleife. Hat in meinen Augen den Sinn, daß das Speichern eines Wertes in einem Feld (oder notfalls auch in einem String, den Du dann für die Ausgabe wieder zerlegst) AFAIK deutlich schneller geht als eine Ausgabe.
Den Ausdruck >>$string="Antwort"<< Würde ich oberhalb der for-Schleife verwenden, daran ändert sich ja nix und es ist nur eine unnötige zusätzliche Anweisung, die er bis zu 255 mal ausführen muß.

xdfk

pädagogisch wertvoll
Avatar
Registered: Sep 2000
Location: Graz
Posts: 6441
naja theoretisch müsstest du die pings nur in kurzen abständen hintereinander los senden und danach wieder getrennt empfangen..... dadurch blockieren sich die pings nicht gegenseitig.. wie man das aber praktisch ausführt.. null ahnung

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
einfach als CGI schreiben, und die CGI App gibt dann mit cout (in c++) den html source retour der angezeigt wird - also als php script mit combo box und so - das könnt gehn.

mfG CB

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
@johnny: thx, für deinen tip, aber es geht auch nicht wirklich schneller

@xdfk: naja, ob das mit php geht :confused:

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
@bimminger: sorry, ich kenn mich mit cgi und c++ im web etc. nicht aus. könntest du mir da ein tutorial oder eine seite empfehlen, wo man so etwas ähnliches ansehen könnte.

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
grundvoraussetzung is mal dass... der webserver deine .EXE CGI-Anwendung erlaubt. dann einfach über cin die "Eingaben" aus dem HTML abfragen, und mit count wieder eine HTML page aufbauen. eine richtige doku dafür is ma net bekannt, aber die CGI-Grundlagen werdn in selfhtml behandelt:

http://www.teamone.de/selfhtml

werde aber bei weiteren fragen gerne helfen - habs zwar selber nu nie gmacht, wird aber gehn...

mfG CB

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
eine frage:

wie kann man in c++ am einfachsten einen ping setzen? ich stelle mir das ungefähr so vor:

if(ping(192.168.6.1)){...

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
ich bin gerade draufgekommen, dass das ganze tatsächlich an dem ping programm unter dos liegt. wenn ich nur gültige ip-adressen abfrage geht es extrem schnell. es nützt auch nichts, wenn ich dem ping befehl parameter anhänge, sodass er das timeout bereits nach 1 ms gibt bzw. er nur 1 byte sendet. es dauert immer so lange...

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
musss dann unbedingt ein PING sein? oder geht vielleicht a einfach a socket connection zum andren rechner aufbauen und schaun welche fehlermeldung kommt... sorry, bei detailfragen weis i da a net weiter, aber eine idee wärs ja.

mfG CB

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Das einzige was hier wirklich hilft ist, die Pings parallel abzusetzen. Was willst du eigentlich bezwecken? Es ist eher unüblich, dass ein Webserver ein Subnet scannen muss....

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
naja, ich will schaun, welche rechner im netz laufen und dann bei denen, die laufen informationen abfragen, die ein winziger dort installierter webserver dort schickt...

edit: aber ich glaub' ich lass es jetzt so. länger wie 30-40 sekunden muss man ja nicht warten. und so oft muss das ja auch nicht durchgeführt werden.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz