Seite 1 von 1

Mehrfacher Dateizugriff?

Verfasst: 04.12.2004 23:16
von Dave
http://www.phpbb.de/moddb/mod.php?id=190
Bei dem Mod werden ja die Statistiken in eine Datei geschrieben. Was passiert nun wenn zweimal gleichzeitig in die datei geschrieben wird? Kommt es da nicht zu fehlermeldungen? :roll:

MfG
Dave

Re: Mehrfacher Dateizugriff?

Verfasst: 05.12.2004 12:56
von Blutgerinsel
Dave hat geschrieben:http://www.phpbb.de/moddb/mod.php?id=190
Bei dem Mod werden ja die Statistiken in eine Datei geschrieben. Was passiert nun wenn zweimal gleichzeitig in die datei geschrieben wird? Kommt es da nicht zu fehlermeldungen? :roll:

MfG
Dave
Theoretisch sollten Fehlermeldungen kommen da ich nicht auf ein und die selbe Ressource mehrmals zugreifen kann....

Re: Mehrfacher Dateizugriff?

Verfasst: 05.12.2004 17:24
von MrMind
Blutgerinsel hat geschrieben:Theoretisch sollten Fehlermeldungen kommen da ich nicht auf ein und die selbe Ressource mehrmals zugreifen kann....
Praktisch aber nein, weil es sehr unwahrscheinlich ist, das diese Datei innerhalb einer Sekunde 2mal beschrieben wird. Sprich, das Absenden oder ähnliches von zwei User (oder dergleichen) ist eher unwahrscheinlich das es gleichzeitig erfolgt (sprich auf die Sekunde genau).l

Wenn es trotzdem mal Fehlermeldungen kommen, würde ich das schreiben über eine weitere Datei oder eine DB steuern, das, wenn eine Datei (oder genau nur diese Datei) geöffnet wird (oder beschrieben werden soll) der Timestap gespeichert wird, und bei einer erneuten absendung wird überprüft ob diese Datei gerade bearbeitet/beschrieben wird, wenn ja, dann eine eigene Fehlermeldung ausgeben und das Script enden lassen.

Wurde die Datei beschrieben und geschlossen, wird die Zeile aus der Datei oder DB die die Daten speichert, gelöscht und steht somit wieder frei ;)

Mfg
MrMind

Re: Mehrfacher Dateizugriff?

Verfasst: 05.12.2004 18:37
von Jensemann
Blutgerinsel hat geschrieben: Theoretisch sollten Fehlermeldungen kommen da ich nicht auf ein und die selbe Ressource mehrmals zugreifen kann....
Nein, auch nicht theoretisch. Die resouce ist dein Filehandle, wenn du eine Datei aber 2 mal open() machst hast du 2 filehandle auf die du beide zur selben Zeit schreiben kannst.
MrMind hat geschrieben: Praktisch aber nein, weil es sehr unwahrscheinlich ist, das diese Datei innerhalb einer Sekunde 2mal beschrieben wird. Sprich, das Absenden oder ähnliches von zwei User (oder dergleichen) ist eher unwahrscheinlich das es gleichzeitig erfolgt (sprich auf die Sekunde genau).
Unwahrscheinlich ist schonmal scheiße. Das klappt grundätzlich nie. Davon auszugehen ist schlamperei.

MrMind hat geschrieben: Wenn es trotzdem mal Fehlermeldungen kommen, würde ich das schreiben über eine weitere Datei oder eine DB steuern, das, wenn eine Datei (oder genau nur diese Datei) geöffnet wird (oder beschrieben werden soll) der Timestap gespeichert wird, und bei einer erneuten absendung wird überprüft ob diese Datei gerade bearbeitet/beschrieben wird, wenn ja, dann eine eigene Fehlermeldung ausgeben und das Script enden lassen.

Wurde die Datei beschrieben und geschlossen, wird die Zeile aus der Datei oder DB die die Daten speichert, gelöscht und steht somit wieder frei

Viel zu komplex und bei anderweitigen scriptabbrüchen ist die Datei bin in alle ewigkeit gelocked, auch mist.

Üblicherweiser nutzt man hierzu eine temporäre Datei die man anschliessend umbenent. Der rename erfolgt atomisch, weshalb man dazu auch keine locks benötigt, die bei PHP sowieso nicht funktionieren.

Re: Mehrfacher Dateizugriff?

Verfasst: 06.12.2004 14:42
von Blutgerinsel
jensemann hat geschrieben:
Blutgerinsel hat geschrieben: Theoretisch sollten Fehlermeldungen kommen da ich nicht auf ein und die selbe Ressource mehrmals zugreifen kann....
Nein, auch nicht theoretisch. Die resouce ist dein Filehandle, wenn du eine Datei aber 2 mal open() machst hast du 2 filehandle auf die du beide zur selben Zeit schreiben kannst.
MrMind hat geschrieben: Praktisch aber nein, weil es sehr unwahrscheinlich ist, das diese Datei innerhalb einer Sekunde 2mal beschrieben wird. Sprich, das Absenden oder ähnliches von zwei User (oder dergleichen) ist eher unwahrscheinlich das es gleichzeitig erfolgt (sprich auf die Sekunde genau).
Unwahrscheinlich ist schonmal scheiße. Das klappt grundätzlich nie. Davon auszugehen ist schlamperei.

MrMind hat geschrieben: Wenn es trotzdem mal Fehlermeldungen kommen, würde ich das schreiben über eine weitere Datei oder eine DB steuern, das, wenn eine Datei (oder genau nur diese Datei) geöffnet wird (oder beschrieben werden soll) der Timestap gespeichert wird, und bei einer erneuten absendung wird überprüft ob diese Datei gerade bearbeitet/beschrieben wird, wenn ja, dann eine eigene Fehlermeldung ausgeben und das Script enden lassen.

Wurde die Datei beschrieben und geschlossen, wird die Zeile aus der Datei oder DB die die Daten speichert, gelöscht und steht somit wieder frei

Viel zu komplex und bei anderweitigen scriptabbrüchen ist die Datei bin in alle ewigkeit gelocked, auch mist.

Üblicherweiser nutzt man hierzu eine temporäre Datei die man anschliessend umbenent. Der rename erfolgt atomisch, weshalb man dazu auch keine locks benötigt, die bei PHP sowieso nicht funktionieren.
klingt plausibel und leuchtet ein.....Muss mir das mal näher anschauen