Mailinglisten-Archive |
Andreas Ahlenstorf wrote: > Hallo, > > Ich habe ein Applikation vor mir, die ~95 Prozent der Operationen in > der Datenbank macht, alles mit Transaktionen gesichert. Ist von der > Datenbank her wunderbar, da sie selbst bei gröberen Fehlern in einem > konsistenten Zustand ist. Ein Problem stellen die restlichen 5 der > Operationen dar, da handelt es sich um Uploads und andere > Dateioperationen. Die sind natürlich nicht transaktionssicher und so > passiert es ab und zu, dass in der Datenbank z.B. nach einem Rollback > noch die alten Dateinamen stehen während die Dateien schon gelöscht > sind oder inzwischen anders heissen. Nun denke ich darüber nach, wie > ich das Problem lösen könnte: > > - Dateien in die Datenbank packen. Problem mit den Dateioperationen > gelöst. Schlägt das Einlesen in die Datenbank fehl, ist's egal, weil > der Datensatz sowieso nicht da ist. Andererseits bin ich der Meinung, > dass Bilder etc. direkt auf die Festplatte gehören und keinen PHP- > Prozess brauchen, um an den Anwender ausgeliefert zu werden. > - Dateioperationen in selbst gebaute Funktionen einwickeln, welche die > gröbsten Probleme eliminieren, indem z.B. Dateien vorerst nur zum > Löschen markiert und nach Vollendung der Aktion endgültig von der > Platte geputzt werden. Nachteil: Sehr aufwendig. > > Bevor ich auswürfle, was ich mache, würde ich gerne wissen, wie ihr das > Problem lösen würdet... vielleicht habe ich ja eine ganz nahe liegende > Lösung übersehen. mhm, die Transaktionen 'kleiner' machen? man braucht doch für ein einfaches "UPDATE ... `file` = $new_name" keine Transaktion, bzw. kann man das wenn man unbedingt möchte in eine eigene Transaktion setzen. also die Sachen die mit nicht-"Transaktionierbaren" Programmteilen in Berührung kommen einzeln behandeln -- Sebastian Mendel www.sebastianmendel.de www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive