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?

MfG
Dave
Theoretisch sollten Fehlermeldungen kommen da ich nicht auf ein und die selbe Ressource mehrmals zugreifen kann....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?![]()
MfG
Dave
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).lBlutgerinsel 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.Blutgerinsel hat geschrieben: Theoretisch sollten Fehlermeldungen kommen da ich nicht auf ein und die selbe Ressource mehrmals zugreifen kann....
Unwahrscheinlich ist schonmal scheiße. Das klappt grundätzlich nie. Davon auszugehen ist schlamperei.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).
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
klingt plausibel und leuchtet ein.....Muss mir das mal näher anschauenjensemann hat geschrieben: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.Blutgerinsel hat geschrieben: Theoretisch sollten Fehlermeldungen kommen da ich nicht auf ein und die selbe Ressource mehrmals zugreifen kann....
Unwahrscheinlich ist schonmal scheiße. Das klappt grundätzlich nie. Davon auszugehen ist schlamperei.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).
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.