Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Liebe Community,

ich habe ein Problem, wo ich wahrscheinlich ich nicht der erste bin.

Zum Script: Es ist ein Tool, dass Daten von einer MySQL Datenbank, in eine Oracle, MSSQL oder eine andere Datenbank hin / her schaufelt. Das klappt soweit ganz gut.

Das Script läuft je nach Kunde unter einem Mac, Linux oder auch einem Windows Rechner.

Es geht darum, dass das Script nicht mehrfach laufen darf. Sondern nur einmal gestartet werden soll.

Als wir nur Linux Kunden hatten, haben wir es in der .sh eingestellt. Da geht das Relativ einfach. Jedoch haben wir nun auch Kunden, wo der Cronjob direkt über http aufgerufen wird. Oder auch Windows / Mac Kunden, wo das nicht so einfach ist.

Da ich da flexibel sein möchte, soll die gesamte Logik im PHP Script implementiert werden.

Ganz Primitiv gesagt:

1. Ich Prüfe ob es eine "isrunning.txt" gibt. Existiert diese, breche ich das Script ab

2. Ich lege eine "isrunning.txt" an

3. Führe meine Funktionen aus

4. Lösche die "isrunning.txt", dass das Script wieder ausgeführt werden kann.

Wir haben auch bereits Workarounds, dass der Cronjob einfach eine höhere Laufzeit bekommt. Jedoch ist dass nicht das Ziel, dass es in Echtzeit läuft.

Wenn in Punkt 3 (Funktionen vom Cronjob) ausgeführt werden, wird einfach ein try / catch drum herum gemacht, so das falls ein Fehler passiert, das nicht von einem Neustart abhält.

Wovor ich angst habe, ist ein Timeout vom Server. Das ist das Hauptproblem was ich habe.

Was kann ich da tun? Wie kriege ich das mit?

Was gibt es noch für Methoden / Dinge die ich beachten muss?

Vielen Dank / Liebe Grüße

errox

Geschrieben

Servus!

Ich würde mit der PID arbeiten.

Mittels int getmypid ( void ) abfragen, und diese dann in myscript.pid schreiben.

Danach kannst Du bei jedem Scriptstart die PID in myscript.pid mit der aktuellen PID validieren und ggf. demnach auch reagieren.

Viel Erfolg!

Geschrieben (bearbeitet)

Ich würde mir einfach mal LOCK TABLES ansehen, bevor irgendwie ein Workaround dafür geschaffen wird ;)

/Edit: ich weiß ja nicht, ob die Tabelle "gepserrt" werden soll, könnte aber Sinn machen bei einer Synchronisation.

Bearbeitet von pr0gg3r

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...