Filepointer auf "unfertige" Datei
-
Das Problem mit fseek war mir bisher nicht bekannt. Hast du da genauere Quellen zum nachlesen, oder eine etwas ausführlichere Antwort, wann und wieso da Probleme auftreten können?
-
Genmutant schrieb:
Das Problem mit fseek war mir bisher nicht bekannt. Hast du da genauere Quellen zum nachlesen, oder eine etwas ausführlichere Antwort, wann und wieso da Probleme auftreten können?
7.19.9.2 The fseek function schrieb:
A binary stream need not meaningfully support fseek calls with a whence value of SEEK_END.
aus dem ISO Standard.
-
aus der coder hölle schrieb:
, hatten wir nicht mal eine diskussion das ftell() nicht wie gewünscht funktioniert, wenn man die datei nicht im binär modus öffnet, da war nwp2 noch aktiv, irgendwie vermiss ich ihn ja? aber das mit dem fseek ist mir neu, naja man lernt ja nie aus
hehe, ja das stimmt. Wusste ich bisher auch noch nicht.
7.19.9.4 The ftell function schrieb:
The ftell function obtains the current value of the file position indicator for the stream
pointed to by stream. For a binary stream, the value is the number of characters from
the beginning of the file. For a text stream, its file position indicator contains unspecified
information, usable by the fseek function for returning the file position indicator for the
stream to its position at the time of the ftell call; the difference between two such
return values is not necessarily a meaningful measure of the number of characters written
or read.(ebenfalls aus dem ISO Standard)
P.S. Vielleicht hat jemand Lust von euch darüber einen FAQ-Eintrag zu schreiben, warum das fseek/ftell-Duo keine gute Kombination ist :). So etwas sieht man ja öfters.
-
soerenP schrieb:
Und die Schreibzugriff-Anforderung wird mir auch nicht helfen?
Ich interpretiere das als "NEIN"?
-
soerenPE schrieb:
soerenP schrieb:
Und die Schreibzugriff-Anforderung wird mir auch nicht helfen?
Ich interpretiere das als "NEIN"?
Probiere es einfach aus. Das hängt halt von deinem System ab.
-
Eine einfache Möglichkeit wäre, das FTP-Skript so anzupassen, dass etwa statt
put foo.txt
folgendes verwendet wird:
put foo.txt foo.txt.part rename foo.txt.part foo.txt
-
seldon schrieb:
Eine einfache Möglichkeit wäre, das FTP-Skript so anzupassen, dass etwa statt
put foo.txt
folgendes verwendet wird:
put foo.txt foo.txt.part rename foo.txt.part foo.txt
Das hört sich gut an. Ich weiß aber nicht, ob ich darauf Zugriff habe... Ansonsten hilft wohl wirklich nur ausprobieren. Leider etwas mühselig und leicht gefährlich, da wir für diese Art Test irgendwie nur die Produktionsumgebung in Frage kommt
Vielen Dank aber und viele Grüße
Sören
-
Leider ist nichts über den weiteren Hintergrund des Programms bekannt. Ansonsten wäre es vielleicht ja auch möglich, dass alle scheinbar fehlerhaften Dateien im Programm in eine interne Liste geschrieben werden. Diese Liste wird nach einer Pause erneut überprüft.
Ansonsten finde ich die Lösung mit der zusätzlichen Datei sehr gut und sehe dort auch keine Probleme.
-
gfhgfhgfh schrieb:
Leider ist nichts über den weiteren Hintergrund des Programms bekannt. Ansonsten wäre es vielleicht ja auch möglich, dass alle scheinbar fehlerhaften Dateien im Programm in eine interne Liste geschrieben werden. Diese Liste wird nach einer Pause erneut überprüft.
Ansonsten finde ich die Lösung mit der zusätzlichen Datei sehr gut und sehe dort auch keine Probleme.
Noch eine Ergänzung: Ich würde in die Liste die aktuelle Dateigröße und die aktuelle Zeit speichern. Wenn sich dann beim erneuten Überprüfen eine Differenz der alten Dateigröße zur neuen Dateigröße ergibt, dann verbleibt die Datei für einen weiteren Check in der Liste. Sollte sich dann nach einem bestimmten Zeitlimit keine Veränderung mehr einstellen, so wird angenommen, das die Datei fertig ist.
-
http://en.wikipedia.org/wiki/File_locking
evtl. ist sowas nützlich, kommt aber ein bischen darauf an, bzw. ist es unportabel, auch müßte das ftp programm die datei "sperren" wenn es das nicht macht und du keinen zugriff auf den quelltext hast wirds schwer...
-
soerenP schrieb:
seldon schrieb:
Eine einfache Möglichkeit wäre, das FTP-Skript so anzupassen, dass etwa statt
put foo.txt
folgendes verwendet wird:
put foo.txt foo.txt.part rename foo.txt.part foo.txt
Das hört sich gut an. Ich weiß aber nicht, ob ich darauf Zugriff habe... Ansonsten hilft wohl wirklich nur ausprobieren. Leider etwas mühselig und leicht gefährlich, da wir für diese Art Test irgendwie nur die Produktionsumgebung in Frage kommt
Vielen Dank aber und viele Grüße
SörenTschuldigung, ich kenn mich mit dem FTP-Kram kaum aus... Müsste oben angegebenes Skript auf dem Client laufen, der sich auf meinem FTP-Server einloggt?
Gnarrf, das dürfte sich etwas kompliziert gestalten, da die Clients 1. über ganz Europa verstreut sind, 2. keine herkömmlichen Computer sind, sondern eher was in Richtung "Embedded Systems" mit Firmware, die extra upgedated werden muss oder so 3. Daten über GPRS übertragen, wo die Datenmenge echt reduziert werden muss (und ich denke, ein weiterer FTP-Befehl wird da noch weiteren Overhead produzieren)
Alles nicht so einfach. Hab erstmal "r+b" als option versucht, bis jetzt funktioniert es, aber die Fehlerkennung war ja auch nur einmal am Tag oder so... Muss man halt Pech haben für...Viele Grüße
Sören