Hallo Rolf,
Anruf beim Support bracjte die Erkentniss, dass (vermutlich) Scripte, die über cron angestoßen werden, dem script-time-limit nicht unterliegen, aber "sollte/könnte/würde" bringt auch nicht wirklich was. Wir leben nicht im Konjunktiv
Es gibt zwei potenzielle Script-Execution Killer:
- PHP, mit max_execution_time in der php.ini. Diesen Wert kannst Du je nach PHP Einrichtung mit set_time_limit überschreiben. Die PHP Doku sagt: Wird PHP von der Kommandozeile gestartet, ist max_execution_time=0 (also unbegrenzt)
Also bringt meine .htaccess ggf. hier gar nichts, die auf die php.ini Einfluss ausüben soll. Alles klar, danke.
- Die Ausführungsumgebung. Für einen Webrequest ist das der Webserver (apache), für einen cron-Job ist es was anderes. Ein Timeout Wert im Apache gilt deshalb für einen cron Job nicht. Und wenn Du im cron Job PHP aus einem Script heraus startest, ist das ein Kommandozeilenaufruf, der max_execution_time aushebeln dürfte, so dass nur ein in cron gesetztes Ausführungslimit greifen sollte.
Leider kann ich per cron nicht den php-interpreter direkt ansprechen, ich muss es über ein Batchscript und wget machen (laut Support).
Ein kompetenter Support sollte Dir das ohne Konjunktive und mit exakten Zahlen erklären können.
Bin nur bis zum first level-Support durchgedrungen. Reine Glücksache bei meinem Provider. 😕
Ansonsten hilft nur probieren, mach ein Script, das in einer Logdatei zu Beginn den Startzeitpunkt und die gefundenen DBs einträgt und nach jedem Dump den den gedumpten DB-Namen und den Fertigstellungszeitpunkt loggt. Dann siehst Du ja, wie lange er braucht und ob er abbricht.
Meine derzeitigen Datenbanken schafft der Cron, dauert ca. 4 Minuten. Da die DBs aber die Angewohnheit haben, mit der Zeit größer zu werden, werde ich mir mal ein paar Kopien der größten DBs anfertigen, sodass ich mal 10 Minuten ausprobieren kann. Dann weiß ich, ob es künftig Probleme geben könnte. Die Idee, das Ganze zu loggen (sagte Raketen* auch schon), habe ich auf dem Plan. Ich mache das dann über einen 2. Cron, der ca. 1 Std. später nachschaut, ob alle DBs gesichert wurden und mir eine Mail schreibt, falls nicht.
Dein Self-Restart ergibt dann und nur dann einen Sinn, wenn der Dump jeder einzelnen Datenbank innerhalb der Script-Ausführungszeit liegt, aber die Summe der Ausführungszeiten zu groß wird. Ein cron Job ist für Backups eh besser, würde ich sagen, weil der vom Server aus zeitgesteuert ist.
Das ist korrekt. Ich bin aber gar nicht sicher, ob das Script wirklich neu gestartet wird und die Scriptlaufzeit überhaupt von neuem beginnt. Raketen* sagte, das sei nicht der Fall. Und der Aufruf im Browser sieht auch nihct so aus, als würde das Script neu starten. Was mienst Du dazu?
Gruß, Jörg