Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Doppeltes ausführen/starten verhindern...

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Wirths Media
PostRank 9
PostRank 9
Beiträge: 2050
Registriert: 20.09.2004, 20:25

Beitrag von Wirths Media » 07.01.2007, 10:10

Hallo,

wie kann ich testen ob ein Script bereits läuft (PHP)?

Das Script wird per Cron ausgeführt und soll, wenn es bereits läuft nicht noch einmal gestartet werden.

Mit einer Logdatei wäre es eine Variante, aber was ist, wenn das Script abgebrochen wird? - Dann wurde das Script nich mehr gestartet werden, da es ja angeblich noch läuft.

Danke

Daniel

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Monk
PostRank 2
PostRank 2
Beiträge: 44
Registriert: 23.08.2006, 09:59
Wohnort: bei Frankfurt/Main

Beitrag von Monk » 07.01.2007, 11:03

Wie bei Shell-Programmierung:

1. mit sauberer Fehlerbehandlung programmieren und
2a. PID im lock file (nicht 'logfile') vermerken, gucken ob es den Prozess wirklich noch gibt, und wenn nicht, dann aufräumen und weiter - oder
2b. sinnvolle "zu lange Laufzeit" definieren und wenn ein älteres lock file existiert, dann aufräumen und weiter

Wirths Media
PostRank 9
PostRank 9
Beiträge: 2050
Registriert: 20.09.2004, 20:25

Beitrag von Wirths Media » 07.01.2007, 11:23

Bin auf dieses hier gestoßen...

ps -ef | grep 'crondatei.php'

Meinst Du das gleiche???

Monk
PostRank 2
PostRank 2
Beiträge: 44
Registriert: 23.08.2006, 09:59
Wohnort: bei Frankfurt/Main

Beitrag von Monk » 07.01.2007, 12:15

Nein, ich meine Steuerung über ein lock file, das der Prozess vor der echten Arbeit schreibt und nachher wegräumt.

Du kannst natürlich auch in der Prozessliste nach aktuellen gleichen schauen. Das hat aber einige Hakeligkeiten. Ein paar lassen sich mit Sorgfalt bereinigen, aber:
- das Nachschauen ist prinzipiell nicht atomar hinzubekommen, so dass mit etwas Pech doch mehrere loslegen können,
- ein gleichzeitg testender Prozess sieht für andere (auch sich selbst) schon aus "wie bei der echten Arbeit", so dass sie sich leicht gegenseitig stoppen.

Wirths Media
PostRank 9
PostRank 9
Beiträge: 2050
Registriert: 20.09.2004, 20:25

Beitrag von Wirths Media » 07.01.2007, 17:18

Nein, ich meine Steuerung über ein lock file, das der Prozess vor der echten Arbeit schreibt und nachher wegräumt.
Ja, aber was mache ich, wenn das Script abbrechen sollte, dann wird der Wert nicht mehr gelöscht und das "nächste" Script denkt es ist noch ein zu gange...

Monk
PostRank 2
PostRank 2
Beiträge: 44
Registriert: 23.08.2006, 09:59
Wohnort: bei Frankfurt/Main

Beitrag von Monk » 07.01.2007, 18:31

Wie oben geschrieben, Punkte 1-2b:

zu (1): saubere Skripte brechen nicht einfach so ab ohne hinter sich aufzuräumen, ausser sie werden gekillt. Alles andere ist Schluderei.

zu (2): Erkennung und ggf. Aufräumerei von lock-Leichen ist Teil einer sauberen Prüfung zu Skriptanfang. Deswegen auch die Varianten
(a) Suche nach einem Prozess mit der dazu passenden PID oder
(b) Gucken, ob das fremde lock file "unmöglich alt" ist.

Im Detail ist noch ein bisserle mehr zu beachten, damit Prozesse sich auch in ekligen Ausnahmen nicht ins Gehege kommen. Aber etwas eigenes Nachdenken sollte schon sein :)

Wirths Media
PostRank 9
PostRank 9
Beiträge: 2050
Registriert: 20.09.2004, 20:25

Beitrag von Wirths Media » 07.01.2007, 18:48

Danke hast mir erst mal weitergeholfen, mal sehen was ich genau mache.

Gruß
Daniel

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag