Ping mittels PHP ?

Guten Morgen allerseits,

wahrscheinlich eine typische PHP-Anfängerfrage :rolleyes: , aber wie setzt man eigentlich mittels PHP einen Ping ab ?

Danke für jeden Tipp :slight_smile: !

LG aus Graz,
Erwin

Guten Morgen Erwin,

probiers mal mit


exec("cmd.exe /c ping www.ipsymcon.de")

mit „exec“ kann man externe Befehle bzw Programme mit PHP ausführen.

Gruß
Kollaps

Hey danke Kollaps,

so einfach geht das also :), PHP verblüfft mich immer wieder ! Wundert mich nimmer, dass sich das so durchgesetzt hat. Muss ich mir dann die Beschreibung der exec-Funktion gleich mal zu Gemüte führen. Ich hoffe, dass man dort dann auch nachlesen kann, wie man dann zum Ergebnis bzw. der Antwort auf den Ping-Befehl kommt.

LG aus Graz,
Erwin

Hallo Erwin,
kenn den Befehl auch nur, weil ich mal überprüfen wollte, ob mein DB-Server
auch erreichbar ist.

Mit diesem Befehl kannst du auch andere Probramme starten. Mußt halt ein bisschen rumspielen.

Kurzes Beispiel:


 
<?
print "ping auf www.ipsymcon.de: ".exec("cmd.exe /c ping www.ipsymcon.de")."<br>";
?>
 

gibt aus:


ping auf www.ipsymcon.de: Minimum = 10ms, Maximum = 30ms, Mittelwert = 22ms

Könntest Du dann ja auch in eine Variable speichern.

Gruß
Kollaps

Hallo Kollaps,

das ist ein Service, danke dir, jetzt brauche ich nicht einmal mehr nachlesen :slight_smile: ! Hoffe, ich kann mich mal revanchieren.

LG aus Graz,
Erwin

Habe jetzt doch schnell mal nachgelesen und gesehen, dass es sogar drei verschiedene Möglichkeiten gibt, externe Programme auszuführen: exec(), passthru() und system(). Je nachdem, ob und wie man die Ausgaben des ext. Programms weiter verarbeiten will, muss man die entsprechende Funktion wählen.

LG aus Graz,
Erwin

PHP beinhaltet auch eine Menge nativer Funktionen für Netzwerke.
siehe im Handbuch unter:
http://de2.php.net/manual/de/ref.network.php
http://de2.php.net/manual/de/ref.sockets.php
… und weitere.
In der Socket Section ist auch ein Ping-Beispiel dabei.
Evtl.sind die entsprechenden Bibliotheken nur nicht aktiviert, dann müssen diese in die php.ini als Extensions eingebaut werden.

Tommi

Hi tommi,

danke für die Links, habe gleich nachgesehen und das selbstgeschriebene Ping auch gefunden. Werde ich sicher bald ausprobieren, da die PHP Funktionen (exec, passthru, system) für das Ausführen von ext. Programmen auf meinem VIA EPIA Miniserver beim Pingen doch relativ langsam sind, jedenfalls bei meinen bisherigen Tests. Bin gespannt, wie sich dieses Script verhalten wird.

Obwohl ich meine LANs und WLANs samt Router, Switches, usw. alle selbst mit Erfolg eingerichtet habe, bin ich doch nicht unbedingt DER Netzwerkspezialist. Bin deshalb jetzt, abgesehen von der Sache mit dem Ping, auf der Suche nach einer möglichst einfachen Lösung, um meine (bald) zwei IPSe über xDSL zu verbinden und sie Daten austauschen zu lassen. Anfangs würde, wie schon mal anderswo erwähnt, ausreichen, wenn sich zwei Scripte über’s Inet Daten in Form von Variablen übergeben könnten. tommi, du scheinst ja netzwerkseitig ganz gut drauf zu sein :slight_smile: , vielleicht fällt dir dazu ad hoc irgendwas ein. paresy hatte dazu ja auch schon Tipps.

Bin dankbar für jeden Tipp, CSS ist meines Wissens in der Sache IPS-Interkommunikation ja auch bereits tätig.

LG aus Graz,
Erwin

Hallo,
Du könntest ja auf beiden Seiten den Webservice freischalten.
Dann baust Du auf jeder Seite ein PHP-script, welches Variablen sendet (zum Beispiel in der URL als GET oder unsichtbar als Post, sprich es baut die URL aus den Parametern und dem Zielhost zusammen und ruft diese dann auf und wartet auf die Quittung.
Ein zweites Script auf der Gegenseite wertet die URL aus und gibt die Quittung zurück, welche vom ersten Script ausgewertet wird (OK reicht.)
server1-> $fh=fopen(„http://server2.dyndns.org/services.php?parameter=$IPS_VARIABLE&value=1“,‚r‘);
… weiter wie mit einer localen Datei

server2->echo „OK<br>“
Gibst Du keinen Value mit, würde ich das als Abfrage werten und z.B. zurückliefern:
server2->echo „VALUE= 20“
Prinzip ist zwar einfach, funktioniert aber sogar in der Praxis :slight_smile:
Den zurückgebenen Text kannst Du dann mit String/RegEx-Funktionen bearbeiten und entsprechend auswerten.

Daneben gibt es noch einen Standard für solche Webservices:SOAP. Da werden im Prinzip XML-Dateien mit allen zusatzinformationen definiert ausgetauscht. PHP bietet auch dafür eine Unterstützung, besser ist es natürlich, wenn der IPS_Webserver das „von Hause aus“ kann, weil der schon alle Informationen über die Dienste (DTDs) generieren kann. Deswegen hatte ich ja auch schon mal nach SOAP gefragt.

Tommi

Hallo tommi,

danke dir für die hochinteressanten Ausführungen. Auf der Webseitenebene bin ich leider ganz und gar nicht sattelfest, habe nur ein paar einfache Webseiten mit ein bisserl Javascript gebastelt :rolleyes: . Dass man mit GET und POST Daten austauschen kann, hatte ich mir schon auch vorgestellt bzw. gewusst.

Was meinst du denn zur Idee von paresy es per ftp zu machen ? Das ist ja in PHP auch ganz super implementiert. Man kann damit halt „nur“ Dateien hin- und her kopieren, denke ich, aber damit kann man ja auch sehr viel machen.

Bei diesen ganzen Socketgeschichten in PHP kenne ich mich leider überhaupt noch nicht aus. Damit kann man ja auch Inetverbindungen aufbauen, mit fsockopen() und so. Nur wie es dann weitergeht, habe ich keinen blassen Schimmer :frowning: .

Aber ok, die Zeit wird ja zeigen, womit es dann am besten gehen wird, ad hoc brauche ich es ja noch nicht. Habe heute erst mit Michael wegen dem zweiten IPS „verhandelt“ :slight_smile: und es auch gleich bestellt. Als nächstes muss ich jetzt auch die Hardware dafür besorgen, wird aber auf jeden Fall wieder ein VIA EPIA Board, bin total zufrieden mit diesen Dingern.

Gut dann, schönen Abend noch + LG aus Graz,

Erwin

Natürlich funktioniert das mit dem FTP auch. Ich persönlich finde das aber zu umständlich weil Du erst ein Script brachst, was die Daten packt und sendet, 2. einen funktionsfähigen FTP-Server, wobei FTP ein unsicheres Protokoll, 3. brauchst Du noch ein script, was regelmäßig nachsieht, ob neue daten da sind und dann natürlich auch noch die von Dir gewünschte Funktion ausführt.
In der von mir beschriebenen Variante (die ich übrigens einsetze, um den Webserver bei meinem Provider mit neuen Daten zu füttern) ist das mehr oder weniger ein Rutsch und vermeidet das pollen auf neue Daten.
Am Ende mache es doch einfach so, wie es dir am einfachsten erscheint. Es gibt bekannter massen viele Wege nach Rom und Du als gestandener Programmierer weisst auch, das es noch viel mehr Möglichkeiten gibt, um eine Anwendung zu programmieren. Es bringt auch nur Frust sich 14Tage mit einer komplett neuen Technologie zu beschäftigen um Dinge zu erreichen, die man auf herkömlichen Wegen in einem Tag fertig hätte.

BTW:Ich denke auch gerade über die EPIA-Boards nach. Ich habe schon 2 im Einsatz (M10000 und PD10000), wobei mir (und besonders meiner Frau) die Geräuschentwicklung der Gehäuse viel zu hoch ist. Ich überlege nun, beide Boards irgendwie ohne Standardgehäuse so zusammen zu bringen(Linux läuft schon, nun brauche ich noch einen für Windows+Symcon), das ich sie mit EINEM (älteren) ATX-Netzteil versorgen kann. Geht das? Oder hast Du andere Ideen, wie ich meiner Frau das ganze schmackhaft machen kann, die sich jetzt schon über den dauernd laufenden Server im Cubid-Gehäuse beschwert?

Tommi

Hallo tommi,

deine Ausführungen bezüglich ftp überzeugen mich. Werde auf jeden Fall auch deine Variante ausprobieren, wenn es soweit ist.

Das Lärmproblem mit den EPIAs, da sprichst du mir aus dem Herzen, ich denke auch schon monatelang drüber nach und suche auch dauernd im Inet herum, wie ich die Kiste leiser machen könnte. Ich hab das MII12000, das natürlich ohne Lüfter nicht auskommt. Als Gehäuse habe ich das wunderschöne von der IP-SYMCON Startseite hier, nur ist der temperaturgesteuerte Netzteillüfter noch immer viel zu laut. Vom Prozessorlüfter im Gehäuse hört man gar nicht mehr so viel, aber eben dafür den Netzteillüfter. Meines Erachtens läuft der trotz Regelung noch immer viel zu schnell, ich habe vor, dass ich mir das Ding mal von innen ansehe, ob sich da nicht was runterregeln läßt. Temperaturkontrolle hat man eine ganz tolle bei diesem Gehäuse, weil es vorne ein schön großes LCD-Display drauf hat, wo unter anderem auch die Innentemperatur angezeigt wird.

Die Versorgung von zwei Boards mit einem Netzteil sollte übrigens kein Problem sein, Kabel musst du dir halt eines basteln. Deiner Frau stört, nehme ich mal an, wahrscheinlich ja auch der Lärm am meisten, oder ? Weißt du, woran ich ernstlich schon dachte ? An eine Miniwasserkühlung ! Das ist das Einzige, womit du die Dinger wahrscheinlich wirklich leise bekommst. Gefunden habe ich noch keine, aber ich würde mir notfalls glatt selbst eine bauen, mechanisch bin ich einigermaßen ausgerüstet, die Zeit wird wahrscheinlich wieder das Problem sein :frowning: ! Davor möchte ich aber noch sehen, ob es nicht z.B. von Papst einen leiseren Lüfter für das Netzteil gibt.

Ach ja, der Tipp mit dem include_once war ganz toll, habe schon wieder einige Scriptzeilen einsparen können :slight_smile: !

Schönen Abend noch + LG aus Graz,

Erwin