Oldperl hat geschrieben: ↑Do 9. Nov 2017, 14:14
Das ist definitiv falsch! CONTENIDO in Version 4.9 löscht, wenn es denn alles durchläuft, rekursiv alle zur Sprache gehörenden Elemente. Und das sowohl in der DB als auch im Code-Cache. Der Löschprozess ist recht umfangreich programmiert und bezieht sich auf etliche Core-DB-Tabellen.
Es gibt aber kein zurück, auch nicht falls etwas schief läuft oder abbricht. Hier kann man das Löschen nochmal anstoßen, solange der Eintrag in der Tabelle für die Sprachen noch vorhanden ist, und damit Abschnittsweise löschen. Je nachdem an welcher Stelle der Abbruch erfolgte können dabei aber Karteileichen übrig bleiben.
Das kann sich durchaus bei manchen Hostern als Problem erweisen, die ganz gerne mal PHP-Prozesse abbrechen.
Seinerzeit, damals Leipzig-Einunleipzig, habe ich das mit einer Löschtabelle realisiert, denn zuletzt wird (sinnbildlich) der Index gelöscht, also die ID von Daten. Solange die ID in einer löschtabelle vorhanden ist, kann man immer wieder nachträglich löschen bis alles weg ist. Alles weg ist es dann, wenn in der Löschtabelle kein Eintrag mehr ist.
Bei großen Datenmengen lohnt es sich, die Löschtabelle über einen Cronjob laufen zu lassen.
Und Löschtabelle können zur Laufzeit erzeugt und gelöscht werden, die muss nicht bei der Installation schon vorliegen. Es ist ganz einfach, ist keine Löschtabelle bei Anforderung zum Löschen vorhanden, wird eine erzeugt. Ist eine vorhanden, wird unten angefügt und nach alten Einträgen geschaut. Sind Einträge vorhanden, werden die Daten hinter diesen IDs gelöscht. Sind keine Daten mehr vorhanden, wird bei Erfolg (!) der Eintrag aus der Löschtabelle gelöscht. Sind keine Einträge mehr in der Löschtabelle vorhanden, wird diese selbst gelöscht.
Bei wirklich großen Datenmengen habe ich das per Pseudocronjob laufen lassen, also einem PHP-Prozess, der sich selbst auf Existenz prüft.
Der läuft dann 24/7 und prüft ununterbrochen die Löschtabelle auf Einträge. Aber Contenido Projekte haben selten so großen Löschbedarf, dass sich das lohnen würde, da reicht der Hauseigene Cronjob aus.
Unbestreitbarer Vorteil der Löschtabelle ist, dass auch bei Serverausfall keine zu löschende Daten als Datenmüll in der DB zurück bleiben, weil die Tabelle so lange Einträge enthält, so lange es Daten gibt, die zu löschen sind.
Transaktionen mit innoDB sind eine eigene Sache, hierbei gibt es bei Transaktionssicherheit ein Rollbackverfahren. Aber das halte ich für komplexer als eine Löschtabelle, mit der man notfalls auch Daten manuell löschen könnte.
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.