Andreas Görtz: Dateifunktionen unter Windows

Beitrag lesen

Hi Tom,

Wenn Du das noch einmal mit der clearstatcache-Variante ausprobiern könntest auf Deiner DOSe...

da passiert das gleiche - fseek gibt keinen Fehler zurück. Ausgabe des Scripts insgesamt:

seek: 0
0 (das war ftell())
123456 (das der Inhalt der Datei)

Es wäre auch möglich, das ftruncate($fh,0) direkt nach dem Bewegen des Dateizeigers auf Pos. 0 zu versuchen, und dann erst zu schreiben.

das funktioniert (gerade getestet), ich halte das aber für eine eher schlechte Idee, da die Performance bei großen Dateien doch erheblich schlechter sein dürfte.

Letztendlich verstehe ich nur nicht, warum du eine Datei immer mit "a+b" öffnest, wenn du sie komplett überschreibst (den Inhalt also eh nicht erhalten möchtest). Für diesen Zweck würde sich m.E. eher das Öffnen im Lese-/Schreibzugriff (also "r+b") anbieten, was dann auf allen BS funktionieren müsste, also:

  • fopen('r+b')
  • flock()
  • fread()
  • Daten bearbeiten
  • rewind()
  • fwrite()
  • ftruncate()
  • fclose()

So klappt's dann auch unter Windows (zumindest bei mir).

Welches System war das bei Dir?

Ich arbeite unter Windows 2000 SP4 mit Apache 2.0.49 und PHP 4.3.6

Gruß,
Andreas.