Hallo PHP-Gemeinde,
was ist denn eine einfache und zuverlässige Möglichkeit, um festzustellen, ob bereits eine Instanz eines Skripts bzw. Prozesses läuft?
Meine Update-Funktion besteht aus einer größeren Anzahl von Skripten, die der Reihe nach ausgeführt werden und dabei auch in Files und Datenbank schreiben, was natürlich kritisch werden kann, wenn mehrere Instanzen dieses Prozesses gleichzeitig gestartet werden.
Es soll also auf jeden Fall gesichert sein, dass immer nur höchstens eine Instanz des Prozesses gleichzeitig läuft.
Ich möchte jetzt aber nicht nachträglich wie auch immer gestrickte Semaphoren-Blöcke in die Skripte einbauen und danach fünf weitere Tage alles durchtesten, sondern nach Möglichkeit auf einen Skript-externen, d.h. serverspezifischen Indikator, z.B. eben Server-Variablen zurückgreifen.
Und was natürlich auch nicht viel bringt, ist das Setzen eines Flags in der Datenbank, wenn die erste Instanz gestartet wird (die zweite würde das Flag ja bereits erkennen und abbrechen), denn wenn der Prozess mal unerwartet abbricht, bleibt das Flag ja gesetzt - auch hier wäre ein Umbau sämtlicher betroffener Skripte dahingehend erforderlich, dass das Flag bei jedem Abbruch wieder gelöscht wird - ein furchtbarer Aufwand, braucht man gar nicht weiter drüber nachdenken.
Kann ich denn über irgendwelche Server-Variablen rauskriegen, wie oft ein Skript läuft bzw. ob zu einem best. Zeitpunkt bereits andere PHP-Skripte auf dem lokalen Server ausgeführt werden? (wär zwar eine qualitative Einschränkung gegenüber der Abfrage, ob es sich dann auch um eine Instanz desselben Prozesses handelt, aber immer noch besser, als jetzt alle Skripte zu überarbeiten ).
Gibts z.B. eine Liste aller aktuell auf dem Server laufenden Skripte, die man über PHP auslesen kann?
Hat jemand einen Tip, wie man rausbekommt, ob der Prozess bereits läuft?
Gruß Michi
was ist denn eine einfache und zuverlässige Möglichkeit, um festzustellen, ob bereits eine Instanz eines Skripts bzw. Prozesses läuft?
Meine Update-Funktion besteht aus einer größeren Anzahl von Skripten, die der Reihe nach ausgeführt werden und dabei auch in Files und Datenbank schreiben, was natürlich kritisch werden kann, wenn mehrere Instanzen dieses Prozesses gleichzeitig gestartet werden.
Es soll also auf jeden Fall gesichert sein, dass immer nur höchstens eine Instanz des Prozesses gleichzeitig läuft.
Ich möchte jetzt aber nicht nachträglich wie auch immer gestrickte Semaphoren-Blöcke in die Skripte einbauen und danach fünf weitere Tage alles durchtesten, sondern nach Möglichkeit auf einen Skript-externen, d.h. serverspezifischen Indikator, z.B. eben Server-Variablen zurückgreifen.
Und was natürlich auch nicht viel bringt, ist das Setzen eines Flags in der Datenbank, wenn die erste Instanz gestartet wird (die zweite würde das Flag ja bereits erkennen und abbrechen), denn wenn der Prozess mal unerwartet abbricht, bleibt das Flag ja gesetzt - auch hier wäre ein Umbau sämtlicher betroffener Skripte dahingehend erforderlich, dass das Flag bei jedem Abbruch wieder gelöscht wird - ein furchtbarer Aufwand, braucht man gar nicht weiter drüber nachdenken.
Kann ich denn über irgendwelche Server-Variablen rauskriegen, wie oft ein Skript läuft bzw. ob zu einem best. Zeitpunkt bereits andere PHP-Skripte auf dem lokalen Server ausgeführt werden? (wär zwar eine qualitative Einschränkung gegenüber der Abfrage, ob es sich dann auch um eine Instanz desselben Prozesses handelt, aber immer noch besser, als jetzt alle Skripte zu überarbeiten ).
Gibts z.B. eine Liste aller aktuell auf dem Server laufenden Skripte, die man über PHP auslesen kann?
Hat jemand einen Tip, wie man rausbekommt, ob der Prozess bereits läuft?
Gruß Michi
Kommentar