Archiv verlassen und diese Seite im Standarddesign anzeigen : Foren löschen
Hallo,
wir haben ein vB 3.5.4 laufen und wollten nach einem Umzug ein paar Foren ausmisten. Nach einigen Versuchen mit einer Kopie des Datenbestands, mussten wir feststellen, dass man zwar den Löschvorgang anstoßen kann, es tut sich aber nach ca. 15 Minuten immer noch nichts. Die Seite läd und läd und läd. Kann es wirklich so lange dauern oder ist es nicht zu empfehlen alte Foren, die eine enorme Größe haben zu löschen?
Gibt es vielleicht noch eine andere Möglichkeit diese zu entfernen? Per SQL-Query z.B.?
Wie sieht es eigentlich mit den Beitragszahlen der Benutzer aus? Werden diese dann angepasst? Oder bleiben diese unverändert? Wenn ja, kann man verhindern, dass die Beitragszahlen verringert werden?
Vielen Dank.
s.molinari
24.08.2006, 07:29
Hi dread,
Wenn man den Code zum Löschen eines Forums anschaut, ist es nicht gerade wenig was passiert.
$condition = "forumid IN ($forumlist)";
// delete from extra data tables
$this->db_delete(TABLE_PREFIX, 'forumpermission', $condition);
$this->db_delete(TABLE_PREFIX, 'access', $condition);
$this->db_delete(TABLE_PREFIX, 'moderator', $condition);
$this->db_delete(TABLE_PREFIX, 'announcement', $condition);
$this->db_delete(TABLE_PREFIX, 'subscribeforum', $condition);
$this->db_delete(TABLE_PREFIX, 'tachyforumpost', $condition);
require_once(DIR . '/includes/functions_databuild.php');
// delete threads in specified forums
$threads = $this->dbobject->query_read("SELECT * FROM " . TABLE_PREFIX . "thread WHERE $condition");
while ($thread = $this->dbobject->fetch_array($threads))
{
$threadman =& datamanager_init('Thread', $this->registry, ERRTYPE_SILENT, 'threadpost');
$threadman->set_existing($thread);
$threadman->delete($this->registry->forumcache["$thread[forumid]"]['options'] & $this->registry->bf_misc_forumoptions['countposts']);
unset($threadman);
}
$this->dbobject->free_result($threads);
$this->db_delete(TABLE_PREFIX, 'forum', $condition);
build_forum_permissions();
Wenn möglich lösche die Foren einzeln. Das heisst, wenn ein Forum unter Foren hat, lösche diese Foren zuerst.
Die Beitragszahlen der Benutzer bleiben erhalten bis du "Beitragszähler aktualisieren" durchführst.
Scott
Danke erst mal für den Quellcode, lässt sich dieser irgendwie anpassen um etwas zu optimieren?
Ich habe gestern einen Testlauf gemacht bei einem Forum mit ca. 10.000 Beiträgen (keine Unterforen) nach ca. 35 Minuten war er immer noch nicht fertig, allerdings hatten einige Benutzer schon weniger Beiträge (ohne Zähler aktualisieren durchzuführen). Danach habe ich abgebrochen, Forum weiterhin da, auch alle Beiträge. Gut, war nur ein Testlauf, wenn ich mir das zeitlich jetzt bei ca. 15 Foren vorstelle, die teilweise über 100.000 Beiträge haben, dauert das ja Tage.
Mir geht es um die Altlasten, die nun schon seit einiger Zeit mit in der Datenbank rumgetragen werden. Nur die Foren löschen Option scheint mir nicht wirklich dafür gemacht zu sein. Mir würde es reichen, wenn Foren, Themen und Beiträge gelöscht werden, die Benutzer müssten nicht mal aktualisiert werden, was wohl die meiste Zeit in Anspruch nimmt (denke ich als PHP Unwissender).
Nur um noch mal ein paar Zahlen in den Raum zu werfen, wir reden von ca.
17.000 Themen mit 400.000 Beiträgen.
Ich habe vorhin 27 Themen gelöscht, teilweise mir 300 Beiträgen pro Thema und habe da schon gut 15 Minuten gebraucht.
Mit veralteten Templates kann dies aber nicht zusammenhängen, oder?
Vielleicht habt ihr noch eine Idee?
EDIT: Erneuter Test ergab, dass in 3 Stunden ca 4.000 Themen und xxx.xxx Beiträge gelöscht wurden. Etwas lang, oder?
Herzlichen Dank.
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.