Hallo,
Bei 5 Versuchen gibt es immer dieselbe Fehlermeldung, beim 6. Versuch klappt es.
Ich weiß ja nicht, wie die Daten auf den Rechner kommen - aber kann es sein, dass die Datei(en) zu dem Zeitpunkt des Scheiterns noch nicht fertig / erzeugt oder übertragen und deswegen exclusiv gelockt sind? Auch sowas kann nämlich dazu führen, dass die Datei dann existiert, passende Rechte gesetzt sind, der lesende Zugriff aber doch verweigert wird. Stichwort: flock.
Die Dateien werden per einfachen FTP vom SAP auf den Server übertragen.
Ein flock war auch meine erste Vermutung. Das würde erklären, warum es mal geht und mal nicht. Daher hatte ich das versucht zu reproduzieren:
- Eine genügend lange Zeit (ca. 2 Minuten) warten zwischen Export vom SAP und Import vom Script.
- SAP beendet (um eventuell offen gehaltene Dateien durch FTP auszuschließen)
- Browser erst nach Export gestartet, auf Seite angemeldet und Import gestartet
- Die Dateien über WinSCP zum Lesen geöffnet, kein Problem
- Zwischen glob() und load into table ein Wait für 3 Sekunden eingebaut.
Die Zeit-Komponente meine ich so ausschließen zu können.
lsof hat bisher keine Auffälligkeiten gezeigt, allerdings haben bisher auch (mal wieder) alle Versuche beim ersten Mal funktioniert.
LG Klaus
- Ein
lsof /pfad/zur/datei
könnte Aufklärung verschaffen.Ausgaben sähen dann etwa so aus:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME php 5099 foo 3rW REG 8,5 6 25165834 /tmp/test