Erich: Pingen per PHP

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

  1. 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.

    --
    Visitenkarte
    http://www.christoph-schnauss.de
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
  2. 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

    1. 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.

      --
      Visitenkarte
      http://www.christoph-schnauss.de
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. 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

        1. 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.

          --
          Visitenkarte
          http://www.christoph-schnauss.de
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. 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

            1. 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

              1. 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.

                --
                Visitenkarte
                http://www.christoph-schnauss.de
                ss:| zu:) ls:& fo:) va:) sh:| rl:|
                1. 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

              2. 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

                1. 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

        2. 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.

          --
          Visitenkarte
          http://www.christoph-schnauss.de
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
          1. Hallo Erich,

            bei mir sieht die Aussage so aus:

            round-trip min/avg/max = 57.3/57.3/57.3 ms

            LG
            Chris

        3. 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

  3. Hallo,

    pingen kann man auch mit Pear, aber ob die die gewünschte Ausgabe erzeugen kann, kann ich nicht sagen

    mfg
    Twilo