generic dop: Dateidownload - mehrere Prozesse

Beitrag lesen

Hallo Martin,

ein Prozess (a) lädt eine große Datei und nutzt diese anschließend. Ein anderer Prozess (b) möchte diese Datei ebenso nutzen, muss aber warten, bis a diese _vollständig_ runtergeladen hat.

erklär doch bitte mal genauer.
* Laufen die Prozesse auf demselben Host?
* Haben sie beide direkten Dateizugriff?
* Von wo nach wo wird die "große Datei" geladen?

Ja, die Prozesse laufen beide (können auch viele sein) auf demselben Host. Sie haben auch alle direkt Dateizugriff. Die große Datei (> 1 GB) wird von einem remote server auf den lokalen Host geladen, und zwar via ftp oder http, selten ssh. Es handelt sich also um Zugriff auf das Dateisystem und nicht um einen Datenbankzugriff.

Welche (zuverlässigen) Möglichkeiten gibt es noch? Ich meine jetzt nicht, eine DB durch eine Textdatei zu ersetzen oder ähnliches. Wichtig: es gibt keine Prüfsumme. Kann ein Prozess überhaupt feststellen, ob eine Datei vollständig geladen wurde?

Ja, über Dateisperren (file locking). Prozess a liest oder schreibt die Datei (das geht aus deiner Beschreibung leider nicht hervor), hat sie also für eine gewisse Dauer geöffnet. Wenn der gleichzeitige Zugriff mehrerer Prozesse so heikel ist, sollte die Datei währenddessen für andere Prozesse vollständig gesperrt werden. Dann braucht's keine weiteren Metainformationen.

Prozess a lädt die Datei erstmal auf die Platte, schreibt sie also... Wenn er (der Prozess) sie nach dem Speichern lesend öffnet, brauche ich ja die Sperre nicht mehr.

File Locking... ok. Was passiert, wenn Prozess a den Download aus welchen Gründen auch immer nicht beendet hat? Wäre nicht die Metainformation wichtig, wie lange der Download nun schon dauert? Der Zugriff ist heikel, die Prozesse könnten überhaupt nicht laufen, wenn ihnen die Datei fehlen würde.