phpbar.de logo

Mailinglisten-Archive

[php] Transaktionssichere Dateioperationen

[php] Transaktionssichere Dateioperationen

Sebastian Mendel lists at sebastianmendel.de
Die Jun 21 13:08:56 CEST 2005


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