Updateservice für ein CMS?

B

ByeBye 242513

Guten Tag Community,

ich mache mir gerade gedanken für mein CMS ein Updateservice mit PHP/MySQL zu realisieren. Leider fehlen mir die Ideen wie ich so etwas umsetzen kann. Könnt ihr mir weiter helfen?

Ablauf:
  • Altes ACP prüft bei Login ob eine neue Version vorhanden ist (evtl. mit MD5-Hash?)
  • Altes ACP baut Verbindung mit Updateservice auf (mit Authentifizierung, Kennwort..etc.)
  • Neues ACP bzw. neue Bestandteile werden auf den Server runtergeladen
  • Altes ACP aktualisiert sich (Dateien oder Teile von Dateien ersetzen?)
 

ComFreek

Mod | @comfreek
Moderator
Hi,

1.) Wozu brauchst du einen MD5-Hash? Ich würde einfach in jeder Version die Versionsnummer irgendwo als Konstante speichern und diese dann als Vergleichswert nehmen.

2.) Ob du eine Authentifizierung brauchst, kommt auch darauf an, wie du dein CMS vertreibst. Wenn es Opensource ist oder du den ganzen Quelltext verschleiert (unobfuscated) übergibst, dann nützt dir die Authentifizierung ziemlich wenig.

3 und 4.) Ich würde ein Update mittels ZIP-Datei ausgeben. PHP beherrscht ja ZIP bereits standardweise.

Allerdings müsste man ausprobieren, ob man die PHP-Dateien, welche gerade ausgeführt werden, auch ersetzen kann.
 
B

ByeBye 242513

1) Durch den Hash-Wert wäre eine einfach und schnelle Änderung ermittelbar, dachte ich mir zumindest.
2) Stimmt da hast du Recht.
3/4) Aber was wäre Sinnvoll in die ZIP-Datei zu paken? Das gesamte CMS oder nur die veränderten Dateien?

Weiß jemand wie Woltlab oder Wordpress die Updates, im Detail, handhaben?
 

timestamp

Mitglied Käsekuchen
Es macht mehr Sinn nur die veränderten Dateien zu updaten. Ansonsten ersetzt du ja die alten Dateien mit den gleichen. Und das verursacht unnötigen Traffic.
 
B

ByeBye 242513

Was aber wenn folgendes Szenario eintrifft und ich nur die betroffenen Dateien änder:

  1. Der Benutzer nutzt momentan Version 1.00
  2. Es ist ein Update auf 1.01 verfügbar
  3. Der Benutzer war schon länger nicht mehr im CMS und es ist mittlerweile Version 1.02 erschienen
  4. Dieses Update (1.02) führt er nun aus

Dadurch überspringt der Benutzer ein Update und es wird wahrscheinlich zu Fehlern im CMS kommen.
Wie wäre das Problem zu lösen?
 
Ich sehe da grundsätzlich zwei Möglichkeiten:

  1. Version für Version aktualisieren: es darf keine Zwischenversion übersprungen werden. Eine Installation muss also von 1.0 erst auf 1.1 aktualisiert werden, bevor das Update auf 1.2 eingespielt wird. Das ist auch insofern sinnvoll, als dass du das in der einen oder anderen Form sowieso schrittweise machen musst, wenn du nicht nur die Dateien sondern z.B. auch das Datenbankschema anpassen musst.
  2. Updatepakete für alle möglichen Kombinationen bereitstellen: es gibt separate Update-Pakete für 1.0 ? 1.1, 1.0 ? 1.2, 1.1 ? 1.2. Würde ich nicht empfehlen, da mit steigender Versionsnummer die Anzahl bereitzustellender Pakete schnell wächst. Andererseits wird so beim Überspringen von Versionen möglicherweise Transfervolumen gespart.

Es wäre natürlich auch möglich, beide Ansätze zu kombinieren. Beispielsweise könnte man für Patch-Releases innerhalb eines Minor-Releases (also z.B. 1.0.0, 1.0.1, 1.0.2 etc.) alle möglichen Kombinationen zur Verfügung stellen, von Minor-Release zu Minor-Release aber erst ein Upgrade auf das letzte Patch-Release fordern. Wenn also die letzte Version des 1.0-Zweiges die Version 1.0.42 ist, kann man nur von 1.0.42 auf 1.1.0 updaten, nicht aber von 1.0.23. Oder man könnte auch serverseitig die Update-Pakete nach Bedarf zusammenstellen, was aber mit etwas mehr Aufwand verbunden sein dürfte.

Grüße,
Matthias
 
Zuletzt bearbeitet: