stephan: Datei schreiben in Multiuser-Umgebung

Beitrag lesen

hi,

ich habe zum ändern der Email Adresse in einem Passwort File, welches ich zum einloggen in meine Website verwende, folgendes Script erstellt:

function changeMail($username, $email) {
 $handle = fopen ("../data/usr", "r+");
 flock($handle,2);
 $buffer = '';
 while (!feof($handle)) {
  $zeile = fgets($handle);
  $x = explode("\t",$zeile);
  if($x[3]==$username) {
   $x[4]=$email;
   $buffer.=implode("\t",$x);
  } else $buffer.=$zeile;
 }
 rewind($handle);
 echo fwrite($handle,$buffer,strlen($buffer));
 flock($handle,3);
 fclose ($handle);
}

Meine Frage: Bietet dieses Script genug Schutz, dass die Passwort Datei jederzeit unversehrt bleibt? Beim Auslesen und Hinzufügen von Benutzern werde ich dann auch flock() etc. verwenden.

Ausserdem währe ich sehr froh, wenn mir mal jemand die Funktion flock() genau erklären könnte! Ich werde aus der Referenz auf php.net einfach nicht schlau! Z.B. verstehe ich nicht:
-was machen genau die verschiedenen Verriegelungsarten? (bedeutet jetzt "lesende Verriegelung" dass man noch lesen darf, genau das gegenteil? etc.)
-wie reagiert flock(), wenn eine Datei bereits gesperrt ist? wartet es? wenn ja, wie lange?
-wann genau gibt es false aus? (wenn die Datei gesperrt ist, oder falls sonst ein Fehler passiert?)

vielen Dank, für eure Hilfe!