Import from other forum (Technics)

by Willy Terlinden ⌂ @, Thursday, August 09, 2007, 09:13 (6098 days ago) @ Willy

Hier die Links zu den beiden Files:

http://www.vwbuswelt.de/03-misc/parsi/counter.php.zip
http://www.vwbuswelt.de/03-misc/parsi/import.php.zip

ACHTUNG:Beide Files haben die Endung .ZIP nur angehängt, damit der Apache sie nicht ausführt, sondern zum Download anbietet!

Also nach dem Download bei beiden einfach nur die Endung streichen!

Zunächst mal herlichen Dank an Udo Z., der der eigentliche Urheber ist.
Er hat zugestimmt, das ich sie bereitstelle, damit alle Parsimony-Geschädigten etwas davon haben ;) Wer von Euch einen VW Bus T4 fährt findet auf seiner Homepage

www.t4-lexikon.de

eine wahre Fundgrube an technischem Input!

So nun zu den beiden Files.

Was tun sie?

Der Counter läuft bei mir per cronjob stündlich (1 manueller Lauf nach Import aller Parsimonydaten reicht aber auch)und durchforstet alle Forenbeiträge. Dabei gleicht er die Usernamen der Beiträge mit den registrierten Usern ab.

Wozu? Ganz einfach. Wir haben bewusst darauf verzichtet die Parsimony User zu importieren. Der Schnitt war eine gute Gelegenheit die Karteileichen zu entsorgen.

Alle User müssen sich neu registrieren und wer dabei seinen alten Parsimony Stammposternamen wählt erhält alle Beiträge in der Datenbank wieder zugeordnet.

Da sich nicht alle auf einen Schlag wieder registrieren, sondern nach und nach, läuft das Script bei uns vorerst stündlich.

Das eigentlich interessante Script ist das zweite - import.php.

Bei Parsimony finden sich die Archivdaten des alten Forums als .zip Files zum Download. Jeweils mit rund 10.000 Beiträgen / Archiv.

Zu finden sind die Daten unter der URL:

fxx.parsimony.net/forumyyy/zip.htm

Also einfach an die Parsimony URL des betreffenden Forums zip.htm anhängen.
Die Daten sind öffentlich! Jeder kann die runterladen!

Ich habe einfach per script alle Archive auf den Webserver geladen (rootaccess sei dank ;) ) und mir ein Arbeitsverzeichnis angelegt.
Darin wird jetzt das erste Archiv entpackt.

Danach liegen im Arbeitsverzeichnis rund 10.000 Files mit der Endung .htm

Das importscript wird in den ersten Zeilen für die eigene Datenbank konfiguriert.
Neben den Serverdaten sind die letzten 4 Einträge wichtig.

der lokale Serverpfad zum Arbeitsverzeichnis muss als vollständiger Pfad in der Art:

/srv/www/htdocs/arbeitsverzeichnis/

angegeben werden.

Anzahl dient nur dazu dem Script zu sagen wann schluss ist.
Wenn ihr also die Beiträge in 10.000er Paketen importiert, reicht es wenn Anzahl auf 10.001 steht (höher als die Zahl der Beiträge, die importiert werden sollen).

Als Kategorie wird die ID der Zielkategorie angegeben (mit phpmyadmin in der Tabelle categories raussuchen).

$kategorie=1 wenn die Zielkategorie die ID 1 hat.

Der Offset wird wieder mit phpmyadmin ausgelesen. Diesmal aus den entries.
Ihr nehmt die ID des letzten Foreneintrages und setzt als Offset eins höher ein.

Also leeres Forum (0 Beiträge) $offset=1
Forum mit 10 Einträgen und keine gelöschten $offset=11
Der Wert für $offset muss vor jedem Import angepasst werden!
Sonst werden bestehende Einträge in der Tabelle entries mit gleicher ID gnadenlos überschrieben!

Das Importscript importiert den ersten Beitrag aus dem Arbeitsverzeichnis in die Tabelle entries und trägt als ID den Wert von $offset ein.
Der zweite Beitrag erhält die ID $offset+1 usw.

Nach dem ersten Import von 10.000 Beiträgen in ein leeres Forum sollte die höchste ID jetzt also um 10.000 liegen (kann etwas abweichen, wenn ihr im Parsimony Forum Beiträge gelöscht hattet).

Das script löscht alle .htm Dateien (nur die) im Arbeitsverzeichnis!

Je nach Zahl der Importe läuft das script recht lange. Mehr als 100.000 Beiträge auf einen Rutsch könnte zu Problemen führen, wenn das Script über den Apache läuft und nicht per Konsole aufgerufen wird.

Bei Fragen bitte nicht per e-Mail sondern diese hier stellen:

http://www.vwbuswelt.de/02forum/forum/forum.php?category=8

da liest Udo (der Author) auch mit.

Viel Spass!

Willy

locked
9228 views

Complete thread:

 RSS Feed of thread