Tom: Mehrfachen, gleichzeitigen Dateizugriff nicht zulassen

Beitrag lesen

Hello,

da muss man unterscheiden:

1. Wenn das System anfängt zu arbeiten, ist die Datei bereits
   (als leere Datei) vorhanden
2. Es ist nicht definiert, ob eine Datei zum Zeitpunkt des
   Benutzungswunsches schon vorhanden ist.

Fall 1.

Öffnen der Dateie mit

$fh  = fopen("datei","r+");
$lck = flock($fh, LOCK_EX);

Die Lockfunktion hält das Script nun solange an, bis das Dateilock

erfolgreich ist, oder Timeout des Scripters erreicht ist.

datei vollständig einlesen

$stream = fread($fh,filesize($fh));

Array mit den datensätzen wiederherstellen

$_data = unserialize($stream);

Daten verändern

Dateizeiger wieder auf Anfang

fseek($fh, 0 ,SEEK_SET);

Array wieder in Stream umwandeln

$stream = serialize($_data);

Daten wegschreiben

$ok = fwrite($fh,$data);

Datei nch den gültigen Daten abschneiden

ftruncate($fh, strlen($data));

Datei wieder schießen und freigeben

fclose($fh);

Im Fall 2 muss man die Datei "nichtzerstörend" öffnen im Modus a+, sie dann sperren, den Dateizeiger auf den Dateianfang setzen, und so weiter wie im fall 1.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen