errox Geschrieben 15. Februar 2014 Teilen Geschrieben 15. Februar 2014 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Der Kleine Geschrieben 15. Februar 2014 Teilen Geschrieben 15. Februar 2014 Den Zeitstempel der Datei abfragen, und wenn die Datei länger als 1 Stunde / 1 Tag / 1 Woche ist, dann einfach so tun, als ob diese nicht da wäre. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 17. Februar 2014 Teilen Geschrieben 17. Februar 2014 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pr0gg3r Geschrieben 17. Februar 2014 Teilen Geschrieben 17. Februar 2014 (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 17. Februar 2014 von pr0gg3r Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.