Kurt: Datei "einstreamen"

Hallo Leute,

brauche mal eine kleine Anregung von euch. Ist es in PHP irgendwie möglich eine Datei permanent zu lesen die von anderen Dateien beschrieben wird. Das PHP-script, als so eine Art Pseudodaemon, sollte die neue  Zeile einlesen und verarbeiten können, so als würde es ein "tail -f" ausführen. Ist so etwas möglich ohne das Script immer wieder oder in einer "ewigen" schleife zu starten. Würde mich da für eure Ansätze bedanken.

Der Kurt

  1. Hello,

    brauche mal eine kleine Anregung von euch. Ist es in PHP irgendwie möglich eine Datei permanent zu lesen die von anderen Dateien beschrieben wird. Das PHP-script, als so eine Art Pseudodaemon, sollte die neue  Zeile einlesen und verarbeiten können, so als würde es ein "tail -f" ausführen. Ist so etwas möglich ohne das Script immer wieder oder in einer "ewigen" schleife zu starten. Würde mich da für eure Ansätze bedanken.

    Hast Du denn mal ausprobiert, im Script eine "ewige Schleife" laufen zu lassen?

    Datei öffnen  -> $fh
      Laufbedinung abfragen, z.B. Existenz einer Dummy-Datei

    while(laufbedinung())
      {
         if(!$feof($fh))
         {
           echo fread($fh, 128);
         }
      }

    Harzliche Grüße vom Berg und Frohe Weihnachtszeit

    Tom

    --
    Nur selber lernen macht schlau

    1. Hello,

      hab noch was vergessen

      Hast Du denn mal ausprobiert, im Script eine "ewige Schleife" laufen zu lassen?

      Datei öffnen  -> $fh
        Laufbedinung abfragen, z.B. Existenz einer Dummy-Datei

      while(laufbedinung())
        {
           if(!$feof($fh))
           {
             echo fread($fh, 128);
           }

      usleep(500);   ### damit noch Ressourcen für Andere übrig blieben

      }

      Harzliche Grüße vom Berg und Frohe Weihnachtszeit

      Tom

      --
      Nur selber lernen macht schlau

    2. Hallo,

      mit der ewigkeit das ist so ne sache...
      ich hab erstmal dies probiert:

      tail -f /meine/datei  | ./lesetest.php

      dies könnte man als pseudodämon laufen lassen und kontrollieren ob aktiv.
      Inhalt der lesetest.php ist:
      (stammt aus einer faq-seite zu procmail die ich gefunden hab)

      #! /usr/bin/php -q
        <?
         $stdin = fopen("php://stdin","r");

      while (!feof($stdin)) {
                      $buffer = fgets($stdin, 4096);
                      echo $buffer;
      }

      fclose($stdin);
        ?>

      funktioniert erstmal. mal überlegen ob das was taugt.
      Danke Kurt