Huhu
ich habe eine Frage zu folgendem Problem.
Es wird per FTP automatisch eine Datendatei (csv) in ein Verzeichnis auf einen Webserver übertragen.
Dort wird diese von einem Skript (Perl, ist aber eigentlich egal) weiterverarbeitet.
Dieses Skript wird periodisch per Cron angestossen, guckt ob einen Datei
da ist und wenn ja "rattert" es los.
Soweit so einfach.
Da die Datendatei recht gross sein kann (3-4 MB) dauert die Übertragung schon eine gewisse Zeit.
Es muss jetzt natürlich sichergestellt werden, dass das Skript nicht anfängt mit der Datei zu arbeiten bevor diese komplett übertragen wurde.
Bisher hatte ich das durch eine ausreichend grosse Pause zwischen Datenübertragung und Weiterverarbeitung gelöst, das klappt aber nur wenn
der Datenexport tatsächlich zum vereinbartem Zeitpunkt stattfindet.
Da gibt es aber Abweichungen.
Wie würdet Ihr das lösen?
Meine bisherige Idee ist, dass ein weiteres Skript periodisch alle Dateien des upload-Verzeichnisses anguckt und die Dateigröße in einem Flatfile vermerkt.
Jetzt könnte man z.B. definieren, dass eine Datei als übertragen gilt wenn sich die Dateigröße bei den letzten 3 "Anguck"-Terminen nicht verändert hat.
Oder einfacher, man lässt das Datenverarbeitungs-Skript ein paar Sekunden "schlafen" und nur wenn sich in der Zeit an der Datei nichts geändert hat darf es anschliessend weiterarbeiten.
Bei einem Verbindungsabbruch hilft das natürlich nicht aber für einen "normalen" upload könnte das funktionieren.
Besser wäre eine Prüfsumme aber die gibt es hier leider nicht.
So richtig gut gefällt mir das Verfahren aber noch nicht und wäre daher für weitere Ideen, Tipps und Hinweise wie man es "richtig" macht dankbar.
Viele Grüße
lulu
bythewaythewebsuxgoofflineandenjoytheday