Pingen per PHP
Erich
- php
0 Christoph Schnauß0 Chris0 Christoph Schnauß0 Erich0 Christoph Schnauß0 Vinzenz Mai0
seth
0 Christoph Schnauß0 Chris
0 Chris
0 Twilo
Hallo zusammen.
Ich möchte per PHP pingen und anschliessend das Ergebnis in einem String haben, so dass ich im Skript selbst auswerten kann, ob der Ping erfolgreich war oder nicht.
Wie mache ich dies am besten?
Gruss, Erich
hallo,
Ich möchte per PHP pingen und anschliessend das Ergebnis in einem String haben, so dass ich im Skript selbst auswerten kann, ob der Ping erfolgreich war oder nicht.
ping ist keine PHP-Funktion. Du kannst es allenfalls über exec() oder passthru() aufrufen. Die Ausgabe kanst du dir in eine temporäre Datei umleiten lassen, und die kannst du vom Script einlesen und beliebig auswerten.
Grüße aus Berlin
Christoph S.
Hallo,
Ich möchte per PHP pingen und anschliessend das Ergebnis in einem String haben, so dass ich im Skript selbst auswerten kann, ob der Ping erfolgreich war oder nicht.
Das, was Christoph schrieb, stimmt zwar nicht. PHP ist in der Lage, Socket-Funktionen zu öffenen und damit auch andere Protokolle, als HTTP zu sprechen, aber ich stimme ihm zu, dass
<?php ### ping.php ###
$host = "www.teamone.de";
$ping = "ping -c 1 $host";
$lastLine = exec($ping);
echo $lastLine;
?>
das so der einfachere Weg ist.
LG
Chris
hallo,
Das, was Christoph schrieb, stimmt zwar nicht.
Was stimmt da nicht?
PHP ist in der Lage, Socket-Funktionen zu öffenen
Natürlich. Das habe ich nicht bestritten.
$host = "www.teamone.de";
Hm. Die Agentur gibt es.
$ping = "ping -c 1 $host";
$lastLine = exec($ping);
echo $lastLine;
Bis auf den kleinen Unterschied, daß du die Befehlsausgabe nicht zwischenspeichern, sondern gleich in eine Variable schreiben willst, sehe ich keine wesentliche Differenz zu meiner Aussage.
Grüße aus Berlin
Christoph S.
Hallo zusammen
$ping = "ping -c 1 $host";
$lastLine = exec($ping);
echo $lastLine;
Dieser Teil ergibt mir leider keine Ausgabe. (Bleibt alles weiss im Browser)
Auch wenn ich exec durch passthru oder system ersetze kommt nichts.
Wie mache ich dass dieser mir eine Ausgabe erzeugt?
Grüsse
hallo,
$ping = "ping -c 1 $host";
$lastLine = exec($ping);
echo $lastLine;
Dieser Teil ergibt mir leider keine Ausgabe
Dann hast du es vermutlich mit einer Windows-Maschine probiert. Die Option -c (als Counter) gibt es unter Windows nicht, da ist ein ping immer auf vier Abfragen eingestellt. Unter Linux und *BSD gibts das aber sehr wohl, siehe die FreeBSD-manualpage
Auch wenn ich exec durch passthru oder system ersetze kommt nichts.
Bitte gib genau an, was du da für Code probiert hast.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
Dann hast du es vermutlich mit einer Windows-Maschine probiert. Die Option -c (als Counter) gibt es unter Windows nicht, da ist ein ping immer auf vier Abfragen eingestellt.
Du irrst. Dafür gibt es unter Windows die Option -n
Gib einfach an der Kommandozeile
ping /h
ping -h
ping /?
oder sogar noch viel einfacher nur
ping
ein und Du erhältst wunderbare Auskunft, wie Du ping beeinflussen kannst.
Freundliche Grüße
Vinzenz
gudn tach!
Dann hast du es vermutlich mit einer Windows-Maschine probiert. Die Option -c (als Counter) gibt es unter Windows nicht, da ist ein ping immer auf vier Abfragen eingestellt.
Du irrst. Dafür gibt es unter Windows die Option -n
nein, Christoph irrt nicht. die option -c gibt es unter windows wirklich nicht standardmaessig (denn sie heisst dort -n). und mit "default = 4" hat er ebenfalls recht.
;-p
prost
seth
hi,
nein, Christoph irrt nicht.
Korrekt. Womit der Thread https://forum.selfhtml.org/?t=119582&m=767227 unerwarteterweise eine Argumentationshilfe bekommen hat.
Grüße aus Berlin
Christoph S.
Hallo Christoph,
Korrekt. Womit der Thread https://forum.selfhtml.org/?t=119582&m=767227 unerwarteterweise eine Argumentationshilfe bekommen hat.
Danke für den Wink mit dem Zaunpfahl. Den hatte ich wohl dringend nötig, wie mir jetzt klargeworden ist. Mein Tonfall war schroff, dazu absolut unangemessen und das tut mir leid.
Das einzige was ich als Entschuldigung vorbringen kann, ist der Frust, den ich nach inzwischen mehr als 14 Tagen Dauerhusten und dadurch erzwungener Untätigkeit (außer dem Notebook am Bett) verspüre. Das gibt mir jedoch keinerlei Recht, diesen Frust an anderen auszulassen. Das war eindeutig ein Fehlverhalten meinerseits, für das ich mich entschuldigen möchte.
Freundliche Grüße (und die sind endlich wieder wörtlich gemeint)
Vinzenz
Hallo Seth,
Dann hast du es vermutlich mit einer Windows-Maschine probiert. Die Option -c (als Counter) gibt es unter Windows nicht, da ist ein ping immer auf vier Abfragen eingestellt.
Du irrst. Dafür gibt es unter Windows die Option -n
nein, Christoph irrt nicht. die option -c gibt es unter windows wirklich nicht standardmaessig (denn sie heisst dort -n). und mit "default = 4" hat er ebenfalls recht.
möglicherweise habe ich Christoph falsch verstanden. Ich las seine Aussage folgendermaßen:
Unter Windows werden bei Ping immer vier Pakete versandt. Du hast keine Möglichkeit, dies zu ändern, weil es die Option -c nicht gibt.
Freundliche Grüße
Vinzenz
gudn tach Vinzenz!
möglicherweise habe ich Christoph falsch verstanden.
davon ging ich aus, versuchte die sachlage noch mal klarzustellen und beendete meine richtigstellung mit einem zwinkernden, zunge herausstreckenden smiley. ;-)
prost
seth
hallo Erich,
$ping = "ping -c 1 $host";
$lastLine = exec($ping);
echo $lastLine;
Dieser Teil ergibt mir leider keine Ausgabe.
Die Ausgabe sollte ungefähr folgendermaßen aussehen (abhängig vom angewählten $host:
Minimum = 66ms, Maximum = 71ms, Mittelwert = 69ms
Grüße aus Berlin
Christoph S.
Hallo Erich,
bei mir sieht die Aussage so aus:
round-trip min/avg/max = 57.3/57.3/57.3 ms
LG
Chris
Hallo Erich,
wenn Du die Systemfunktionen nicht benutzen darfst, gibt es i.d.R. überhaupt keine Ausgabe und auch keinen Programmstopp beim Aufruf...
Du solltest also wissen, ob Du exec(), system() & Co. benutzen darfst.
LG
Chris
Hallo,
pingen kann man auch mit Pear, aber ob die die gewünschte Ausgabe erzeugen kann, kann ich nicht sagen
mfg
Twilo