Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrere Prozesse

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Mehrere Prozesse

    Hallo PHP.de-Gemeinde,

    im Moment arbeite ich an einem Script, dieses Funktioniert schon aber leider nicht so Optimal wie es sollte.

    Es geht um ein Monitoring-System - der Cronjob wird Minütlich aufgerufen und prüft die Erreichbarkeit der in der Datenbank hinterlegten IP-Addressen. Damit wenn ein Server Offline ist nicht jede Minute eine E-Mail versand wird, wird in der Datenbank ein Wert auf 1 gesetzt.

    Das Problem ist je nachdem wie viele Server es sind und an welcher Position der Server steht, sendet der erste Cron die E-Mail setzt den Wert auf 1 - wobei der 2te und manchmal sogar schon der 3te Cronjob angelaufen sind und somit die faslschen Werte also 0 haben und wieder eine Mail versenden.

    Meine Frage wie realisiere ich es das am besten alle Servergleichzeitig geprüft werden wenn ich aber nur einen Cronjob habe der das alles aufrufen muss?

    Danke,
    nBassCom

  • #2
    Überdenk das Design. Wenn Statusabfrage und Emailversand voneinander abhängig sind, dann sollte auch die Statusprüfung vor dem Emailversand ablaufen. Schlauer wäre es, mit dem Cronjob ein Script anzustoßen, dass z.b. über ein [MAN]flock[/MAN] prüft, ob bereits ein vorheriges Script läuft.
    Falls ja: einfach mit exit aussteigen, sonst könntest du deine Datenbank abfragen und per [MAN]pcntl_fork[/MAN] je einen Prozess starten, der erst überprüft, und dann die Email sendet. (Oder du baust das mit einer Queue auf und einer begrenzten Anzahl von worker)

    Über [MAN]pcntl_wait[/MAN] kannst du dann im Hauptscript warten, bis alle Prüfungen abgeschlossen sind. Danach entsperrst du mit flock wieder und kannst dann beim nächsten Cronjob erneut beginnen.

    Kommentar

    Lädt...
    X