gleichzeitige Zugriffe: Datei schreiben

Deemax

Erfahrenes Mitglied
Hallo,

in einer .htaccess-Datei verwalte ich die erlaubten User für eine Website. Das Skript schreibt neue User (fopen etc.) in die htaccess-Datei. Allerdings kann das Skript zur gleichen Zeit mehrmals aufgerufen werden. Können nicht dann einzelne User verloren gehen?
Wie kann ich das verhindern?
 
ich denke das dürfte kein Problem darstellen, selbst wenn wirklich absolut zeitgleich das Script ausgeführt wird.

notfalls nimmst du einfach das Attribut "a" beim fopen-Befehl her, dann kann nix verloren gehen, weil der Eintrag der mit fwrite geschrieben wird einfach nur ans Ende angehängt wird.

oder passt das mit der Struktur von der .htacces-File nicht zusammen?
 
sorry, bin mir jetzt aber nicht ganz sicher wie man den befehl einsetzen soll.

also flock() sperrt eine Datei so, dass man nur wenn man über eine gewisse "methode" auf die File zugreifen will dies auch geht, aber da es sich ja jedesmal um das selbe Script handelt, das auf die Datei zugreifen will, verwendet es ja doch auch immer die selbe "Methode", d.h. der Befehl flock() wär ja dann unnütz. Oder ich evrstehs falsch, was ich schon eher glaub... ^^
Bitte um Aufklärung
 
flock() limitiert den Zugriff für andere Prozesse (also gleichzeitig ausgeführte Scripts) auf bestimmte Zugriffsmethoden, z.B. nur Lesen.
Sperrst Du den Zugriff mit dem Script, haben nachfolgend (also kurz darauf) aufgerufene Scripte keine Schreibberechtigung auf die Datei. Natürlich müsstest Du diese Möglichkeit beachten, und evtl. eine Verzögerungsschleife etc. einbauen, falls die Datei nicht beschreibbar ist, oder eine Fehlermeldung ausgeben.
Sofern aber die Datei nur recht klein ist, und die Schreibaktion nur Bruchteile von Sekunden dauert, sollte es eigentlich selten zu diesen Problemen kommen.
 
wenn man aber immer wieder das selbe Script aufrufen würde und es nun mal tatsächlich gleichzeitig ausgeführt wird, dann würde ja beide male der selbe Befehl flock() ausgeführt werden, würde dann der prozess der das erste mal den befehl ausgeführt wird "bevorzugt" werden während alle anderen dann keinen Zugriff mehr haben?
 
g-zus hat gesagt.:
wenn man aber immer wieder das selbe Script aufrufen würde und es nun mal tatsächlich gleichzeitig ausgeführt wird, dann würde ja beide male der selbe Befehl flock() ausgeführt werden, würde dann der prozess der das erste mal den befehl ausgeführt wird "bevorzugt" werden während alle anderen dann keinen Zugriff mehr haben?

Korrekt - exklusive Schreibrechte.
Die PID, die zuerst kommt, malt zuerst.
 
nun gut, wenn man nicht gerade pro Aufruf paar hundert seiten schreibt und eine tausendfach aufgerufene Seite hat kann sich das der konventionelle Programmierer sparen, pder?! ;)
 
Zurück