Zum Inhalt springen

Typo3-Inhalte spiegeln

Erstellt am 31. Januar 2005 · 9 Antworten · letzte Antwort am 2. Februar 2005

Tags: Import & Export, Frage

remi ·

Hallo,

ich habe folgendes vor:
1. Typo3-Vollversion im Intranet
2. Typo3-ReadOnly-Version im Internet

Sorgen macht mir dabei das Spiegeln der Inhalte. Sowohl ein mysql-dump, als auch ein Export einer .t3d-Datei erstellt stets ein Gesamtbackup des Servers. Ich möchte jedoch gerne stündlich updaten und dann nur die Änderungen übertragen.

Habt Ihr Tipps, wie ich da am besten vorgehe oder kennt Ihr gar fertige Lösungen (SQL-Skripte oder eine Extension)?

Gruß
Remi

remi ·

Hallo jenses,

ich habe mir das backup.php-Skript der Extension angeschaut. Dort wird leider auch ein kompletter Dump der Datenbank gezogen.

Schön wäre es, wenn ich herausbekommen würde, wie Typo3 Datensätze als neu hinzugefügt, geändert oder gelöscht markiert und vor allen Dingen, welche Datenbanktabellen auf Änderungen überprüft werden müssen und welche getrost ignoriert werden können. Dann könnte ich mir ein SQL-Skript bauen, welches alle neuen/geänderten/gelöschten Content Elemente seit einem gewissen Timestamp selektiert. Hat sich hieran wohl schon mal jemand versucht?

Gruß
Remi

remi ·

Wenn ich mir nur die Tabellen pages und tt_content anschaue, dann kann ich mit dem folgenden SQL-Statement schon mal ermitteln, welche Seiten geändert sind:

// Ermittele alle geänderten Seiten
// bei denen entweder Inhalte oder
// die Seite selbst geändert wurde
SELECT DISTINCT pages.uid AS uid, 
pages.deleted AS deleted, 
pages.hidden AS hidden
FROM  pages
LEFT JOIN tt_content ON (tt_content.pid = pages.uid)
WHERE pages.tstamp > 1107031419    # letztes Update als UNIX-Timestamp
OR tt_content.tstamp > 1107031419  # letztes Update als UNIX-Timestamp
ORDER BY uid

Damit habe ich aber noch nicht die Tabellen etwaiger Extensions oder Änderungen am Template berücksichtigt. Mein Skript wird also noch umfassender werden müssen.

Ist niemand hier im Forum, der diese Aufgabe schon mal lösen mußte? 🙁

Gruß
Remi

funkyferdy ·

Das eine wäre zb mit httrack in einem gewissen interval die site physisch zu spiegeln. Da kannst du aber so sachen wie forum, suchmaschine, und alles "interaktive" vergessen.

Das andere wäre 1:1 mysql-replikation und gleichzeitig mit die files zu replizieren.

Das statische publizieren von typo3 wäre auch eine Variante.

Machen musste ich es bis jetzt noch nicht

jenses ·

Mit den Tabellen ist es ja noch nicht getan,
außerdem mußt du ja auch noch die upload-ordner und die Bilder-Ordner
synchronisieren.
Da hast du dir ja was vorgenommen,
viel Spaß dabei 😃

jenses

remi ·

Hallo,

vielen Dank für die Tipps.

Die MySQL-Replikation wäre eigentlich auch meine Idealvorstellung. Wenn, ja wenn da nicht das kleine Problem wäre, daß die Typo 3-Installation mal wieder nur auf einem Webhosting-Paket betrieben werden soll, anstatt einem dedizierten Server.

D.h. ich bin in der Wahl der zum Einsatz kommenden Mittel erheblich eingeschränkt:
- kein direkter Zugriff auf MySQL-Datenbankserver, daher leider keine MySQL-Replikation möglich
- kein Shell-Zugang, daher auch kein Einsatz von rsync oder unison möglich

Was übrig bleibt, ist FTP, HTTP, WebServices. Wenn der Kunde erstmal bei seinem Webhosting-Paket bleiben möchte, dann muß er wohl zwangsweise seine Ansprüche an den zu nutzenden Funktionsumfang des CMS herunterfahren. Alles andere wird sonst in der Realisierung im Vergleich zu den Mehrkosten eines eigenständigen Servers unverhältnismäßig teuer.

Daher realisiere ich wohl erstmal nur folgende (kleine) Lösung:
1. Verzicht auf dynamische Typo3-Komponenten
2. Stündliche Ermittlung der geänderten Seiten mit der obigen SQL-Abfrage
3. Aufruf von httrack zum Abruf der geänderten Seiten und Ablage in einem Mirror-Verzeichnis
4. Spiegelung des Mirror-Verzeichnisses, des fileadmin-Verzeichnisses und des Upload-Verzeichnisses. Hierzu gibt es Tools, die FTP-Spiegelung stellt also kein großes Problem dar.
5. Auf dem Server im Internet liegen dann nur statische Dateien vor, was innerhalb der angemieteten Webhosting-Umgebung sicherlich auch performanter ist.

Mal sehen, wann ich dazu komme, dies zu testen.

Oder habt Ihr noch andere Ideen?

Gruß
Remi

funkyferdy ·

<klugscheiss>
Die Variante die Sie vorschlagen ist, unter Anbetracht der Vorgaben betreffend technische Einschränkungen etc., korrekt.
</klugscheiss> #giggle#

remi ·

Hallo Ulrich,

die Extension "publish2static" macht einen guten Eindruck. Prima ist, dass hier sogar Mailformulare generiert werden. Vielleicht ist der leichteste Weg, das zur Extension dazugehörige Skript "publish.php" einfach so zu erweitern, dass nur geänderte Seiten publiziert werden und nicht immer alle Seiten (neuer Schalter: "publiziere alle Seiten" oder "publiziere nur geänderte Seiten").

Eines weiß ich jedoch noch nicht: Kann ich Extensions auch per Cron-Job aufrufen? Denn die Veröffentlichung soll automatisch jede Stunde erfolgen. Normalerweise würde ich dazu ein Skript bauen, welches stündlich per crontab aufgerufen wird. Aber eine Extension läuft ja nur innerhalb des Typo3-Backends.

Oder kann ich mit entsprechenden Parametern eine Extension via curl oder wget aufrufen und das Publizieren auf diesem Weg anstossen?

Gruß
Remi