Guten Morgen, liebe Leuts.
Ich hab da ein Problem dem ich nicht Herr werde und das mich langsam aber sicher zum Verzweifeln bringt, weil ich schon alles versucht habe und immer wieder unterschiedliche Ergebnisse bekomme.
Ausgangssituation:
Wir haben einen linux-server (managed) bei 1&1 mit einer gut befüllten mysql-datenbank laufen. desweiteren laufen dort verschiedene php-skripte über cronjobs, die Routine-Aufgaben erledigen sollen (z.b. automatisierte Importe in die DB, Check des file-systems etc.). Vereinzelte jobs laufen zu verschiedenen
Uhrzeiten und bestimmten Tagen.
Allerdings gibt es ein bash-Skript, das immer 5 minuten nach Mitternacht jeden Tag läuft. Diese bash beinhaltet unterschiedliche Aufrufe, die entweder selber noch ein bash-Skript aufrufen oder ein PHP-skript ausführen sollen. Das Wichtige an diesem Skript ist allerdings, dass alles sequentiell hintereinander weg läuft, weil einige Routinen erst ausgeführt werden dürfen, wenn die vorherigen erledigt worden sind.
z.B.:
- Aufruf eines bash-Skriptes, das eine Datei per FTP holt und entpackt
- Aufruf eines PHP-Skriptes, das diese Datei öffnet und verschiedene Operationen ausführt und die modifizierten Daten in die DB schreibt.
- Wiederholung der Aktionen mit anderen Dateien
#!/bin/bash
DATUM=$(date +"%Y%m%d")
LOG_DIR=/*********/logs/${DATUM}
mkdir ${LOG_DIR}
/********/htdocs/download1.sh
curl -u username:password --url www******.**/import1.php > ${LOG_DIR}/${DATUM}_import1.log
/********/htdocs/download2.sh
curl -u username:password --url www.*****.**/import2.php > ${LOG_DIR}/${DATUM}_import2.log
-----------------------------
Schreib und Leserechte sind gesetzt, kein Problem. Und wenn ich dieses Skript per Hand ausführe läuft auch alles richtig und ohne Probleme durch, meine Log-files enthalten gut gefüllte Ausgaben aus den PHP-Skripten, die auch bis zum Ende durchlaufen und keine Fehler sind sichtbar.
Wenn ich allerdings den Job um 0:05 ausführen lasse, bekomme ich von allen curl-Aufrufen ein leeres log-file zurück.
Man muss dazu vielleicht noch sagen, dass das erste PHP-Skript verhältnismässig schnell durchgeht (ca. 6min - also normal) und das 2. Skript ca. 1:30 braucht (was aber, wenn man die Skripte einzeln für sich durchlaufen lässt, auch normal ist).
Mein Frage ist nun, was ist für so einen Ablauf besser geeignet? curl oder wget? wo sind die Unterschiede und warum bekomme ich mit wget, wenn ich im Skript 5-6 PHP-Skripte nacheinander aufrufe manchmal komplett leere log-files zurück? Gibt es eine Möglichkeit die Exitcodes oder Errorlevel nach jedem wget- oder curl-Aufruf zu überprüfen, damit man im Skript schon irgendwie handeln kann?
Ich wäre um jede Anregung oder jeden Tipp sehr dankbar,
Gruss, Peter
If kids had been influenced by Pacman, they'd be jumping around in dark rooms eating strange pills and listening to monotonous music these days.