ping beschleunigen

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/ping_beschleunigen_17468/page_1 - zur Vollversion wechseln!


Tex schrieb am 11.11.2001 um 11:52

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.


Bimminger schrieb am 11.11.2001 um 12:00

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


schrieb am 11.11.2001 um 12:04

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 schrieb am 11.11.2001 um 12:09

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 schrieb am 11.11.2001 um 12:09

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 schrieb am 11.11.2001 um 12:10

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 schrieb am 11.11.2001 um 12:16

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 schrieb am 11.11.2001 um 12:16

@johnny: thx, für deinen tip, aber es geht auch nicht wirklich schneller

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


Tex schrieb am 11.11.2001 um 12:18

@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 schrieb am 11.11.2001 um 12:21

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 schrieb am 11.11.2001 um 12:53

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 schrieb am 11.11.2001 um 13:10

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 schrieb am 11.11.2001 um 13:16

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 schrieb am 11.11.2001 um 13:32

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 schrieb am 11.11.2001 um 13:34

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.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025