McKentire: PHP Daemon (Grundlagen)

Hi,

ich verstehe die Funktionsweise eines PHP Daemons noch nicht so ganz.

Im Grunde sollte man ja ein solches PHP "Programm" einmal aufrufen und es läuft im Hintergrund.

Zum Test habe ich eine PHP Datei erstelllt und sie über die PHP Kommandozeile aufgerufen.

Die einzige Möglichkeit, ein PHP Programm konstant laufen zu lassen wäre ja eine Schleife (oder?).

Allerdings steht doch bei einer kontinuierlich laufenden Schleife die Systemauslastung auf 100%? Damit liefe das Programm ja nicht wirklich im Hintergrund ... ^^

Vielleicht kann mir jemand diese Grundlage erklären. :)

MfG,

McKentire

  1. Hallo,

    Allerdings steht doch bei einer kontinuierlich laufenden Schleife die Systemauslastung auf 100%? Damit liefe das Programm ja nicht wirklich im Hintergrund ... ^^

    Eine Schleif ist im Prinzip schon die richtige Wahl. Um die 100% CPU Last zu verhindern, musst Du in der Schleif einfach einen Sleep Befehl einsetzen. Damit gibst Du CPU-Last für andere Prozesse frei.

    Z.B.
    while(true) {
     // Tu etwas
     sleep(1000) // schläft 1000ms = 1s
    }

    So wird // Tu etwas einmal pro Sekunde (ungefähr) ausgeführt.

    Schöne Grüße
    Axel

    1. Hello,

      ... und Du solltest Dir die PID es Prozesses merken, damit Du ihn wieder beenden kannst.
      Außerdem ist es auch nützlich, den Prozess eine Dummy-Datei anlegen zu lassen und ihn in jedem Durchlauf der Schleife danach fragen zu lassen, ob die Datei noch da ist. Ist sie fort, sollte der Prozess geordnet enden.

      So kannst Du die Dummies in einem Verzeichnis sammeln und sehen seit wann etwa welcher Prozess läuft. Da hat er nämlich die Datei mit seinem Namen (und ggf. noch laufender Nummer) angelegt.
      Die create-Time der Datei ist dann meistens ausreichend als Information...

      Harzliche Grüße vom Berg
      http://bergpost.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)

      1. Moin Moin!

        daemontools sind ein komfortabler und sehr sicherer Weg, Hintergrundprozesse zu überwachen. Wesentlich sauberer als das Gefummel mit PID-Files innerhalb des Daemons, und auch um Logging und Neustarts muß sich der Daemon-Prozess nicht kümmern.

        The DJB Way liefert eine etwas detailiertere Erklärung und einige notwendige Patches (da DJB in einigen Punkten, naja, formulieren wir es mal höflich, einen gewissen Abstand zur Realität an den Tag legt -- *räusper* errno *räusper*).

        Ach ja, das Betriebssystem sollte Unix-artig sein, d.h. Linux, *BSD, und ähnliche. MacOS X bringt in den neueren Versionen einen ähnlichen Mechanismus mit, sollte aber auch Daemontools unterstützen.

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        1. Hello,

          daemontools sind ein komfortabler und sehr sicherer Weg, Hintergrundprozesse zu überwachen. Wesentlich sauberer als das Gefummel mit PID-Files innerhalb des Daemons, und auch um Logging und Neustarts muß sich der Daemon-Prozess nicht kümmern.

          Ist aber keine Lösung auf PHP-Basis, sondern eher 'was "für Erwachsene"...

          Ich hatte die Frage so verstanden: Wie geht das mit PHP?

          Harzliche Grüße vom Berg
          http://bergpost.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)