Antworten auf deine Fragen:
Neues Thema erstellen

Update überlegung

Robbyn-

PHP / Flex Programmierer

Hallöle,

ich habe da mal wieder eine Frage und zwar geht es um ein Updatesystem. Ich habe ein Projekt das ständig geupdatet werden muss da es noch in der testphase ist und schon an so einige Leute verteilt wurde und die natürlich immer auf den neusten Stand bleiben würden wollen ohne das System dauernd neu zu installieren.
Ich habe es schon versucht über einen sogenannten Updateserver aber das klappte irgendwie nicht und mir gehen die Ideen aus. Vielleicht kann mir jemand einen Tipp geben z.b. mit welcher Funktion oder dergleichen. Denn meines wissens nach kann man ja nicht von einem auf einen anderen Server auf die z.b. php dateien zugreifen und die z.b. auslesen um die eigene php datei mit der vom updateserver zu überschreiben.
Ich hoffe jemand von euch hat da eine glorreiche Idee.

Vielen Dank im vorraus.

MfG.Robbyn
 

Duddle

Posting-Frequenz: 14µHz

AW: Update überlegung

Im Endeffekt musst du folgendes bewerkstelligen: Client muss erfahren / anfragen, ob er eine neue Version braucht, dann notfalls den Benutzer nach einem Update-Wunsch fragen, die Dateien herunterladen (entweder irgendwo als komprimiertes Paket, oder eben mit Einzeldateien) und lokal überschreiben (aber dann hast du die Hürde, dass der Updater sich selbst nicht überschreiben darf, etc.).

Ich vermute, es gibt dafür schon fertige Frameworks - ähnlich den Installationsmanagern - die auch Updates beziehen können. Ergo: Suchmaschine deines Vertrauens fragen, oder selbst obiges System basteln.


Duddle
 

stroyer

Aktives Mitglied

AW: Update überlegung

php-Dateien werden an sich immer ausgegeben, wenn du es nicht gerade per htaccess unterbindest. Mein erster Gedanke wäre, dass du das neueste System entweder als Ganzes gezippt, in einzelne Pakete gezippt oder die einzelnen Dateien einfach mit .txt dran abspeicherst. Dann würde ich eine index.php oder ähnliches anlegen, die die aktuellen Versionsnummern der einzelnen Pakete/Dateien ausgibt (eventuell noch mit MD5-Hash).
So muss der Server nur die Dateien laden, die wirklich zu aktualisieren sind.
Eine andere Alternative wäre mit diff-Files zu arbeiten, aber bei häufigen Updates kann das leicht zu Chaos führen.
 

Robbyn-

PHP / Flex Programmierer

AW: Update überlegung

Ich vermute, es gibt dafür schon fertige Frameworks - ähnlich den Installationsmanagern - die auch Updates beziehen können.

Sicher? Ich habe mich da gestern dumm und dämlich gesucht um auch nur ansatzweise der Suchmaschine zu vermitteln das ich nicht ein MySQL Update oder ein von PHP4 - PHP5 update haben möchte, sondern ein Datei update auf dem Server. Ein passendes Script geschweige den Framework ist mir nicht in die Augen gefallen.

Mein erster Gedanke wäre, dass du das neueste System entweder als Ganzes gezippt, in einzelne Pakete gezippt oder die einzelnen Dateien einfach mit .txt dran abspeicherst. Dann würde ich eine index.php oder ähnliches anlegen, die die aktuellen Versionsnummern der einzelnen Pakete/Dateien ausgibt (eventuell noch mit MD5-Hash).
So muss der Server nur die Dateien laden, die wirklich zu aktualisieren sind.
Eine andere Alternative wäre mit diff-Files zu arbeiten, aber bei häufigen Updates kann das leicht zu Chaos führen.

Jo ok nehmen Wir mal an ich habe eine neue Version als .zip komprimiert auf dem Updateserver liegen. Meines wissens nach kann man wenn ich jetzt versuchen sollte das .zip zu downloaden erst vom benutzer bestätigt werden muss wo es abgespeichert werden kann und nicht an einer von mir ausgesuchten stelle abgespeichert -> entpackt -> und die einzelnen Dateien überschreiben.
Ich habe da schonmal was davon gehört das man bei code.google seinen Source hochladen kann (leider für jederman sichtbar) und dan ein Script gibt wo man sein Projekt intern Updaten kann was ich aber irgendwie bei google nicht finden konnte.

#------ Andere Lösung -----#

Ich habe das jetzt so gemacht. Ich habe eine html Datei auf dem Updateserver und eine .txt Datei. In der .txt Datei steht die aktuellste Version die dan überprüft wird mit der Version die der Benutzer hat. In der html Datei ist eine Tabelle die die Versionen auflistet und den Benutzern zum Download anbietet das heißt diese Tabelle wird an die entsprechende stelle geladen und der Benutzer kann dan mittel Klick den Download für die .rar Datei starten.
Nun ist es aber auch möglich durch kleine Änderrungen am Code die html Datei auf dem Server zu überschreiben oder zu ändern. Kann man das irgendwie verhindern?
 
Zuletzt bearbeitet:

stroyer

Aktives Mitglied

AW: Update überlegung

Das was ich meinte, ist, dass das Script sich automatisch die (passende[n]) ZIP-Daten holt und gleich entpackt.
Um was genau handelt es sich eigentlich (was wird geupdated)? Ein PHP-Projekt auf Server?
 

Robbyn-

PHP / Flex Programmierer

AW: Update überlegung

Jop genau, ein PHP Projekt das wenn der Benutzer nach einer Überprüfung die Dateien downloadet und automatisch installiert (sucht und ersetzt).
 

stroyer

Aktives Mitglied

AW: Update überlegung

Wieso soll der User die Dateien downloaden?
Wieso nicht direkt der Server per PHP: file_get_contents - Manual?
Und die Versionsdatei am Updateserver kann man ohnehin nur mit Zugriff auf den Server ändern. Man könnte sie auch automatisch aus den einzelnen Paketen generieren.
zB Jede Datei beginnt mit
PHP:
<?php
//v01.25
?>
Der Updateserver liest die Versionsnummern aller Dateien ein und gibt bei Aufruf von version.php aus:
Code:
datei1.php 01.25 4295 d41d8cd98f00b204e9800998ecf8427e
datei2.php 01.28 395 a3cca2b2aa1e3b5b3b5aad99a8529074
...
Wobei Dateiname Versionsnummer Dateigröße MD5-Hash (damit liese sich auch Updatefortschritt einbauen).

Der Userserver holt sich beim Updaten version.php und vergleicht dessen Inhalt mit den Versionsnummern aller lokalen Dateien. Bei den veralteten holt sich der Updateprozess dann die neue Datei (datei1.php.txt) vom Server und ersetzt damit die lokale.
 

Robbyn-

PHP / Flex Programmierer

AW: Update überlegung

Super Idee warum bin ich nicht darauf gekommen o_O.

Aber noch 2 Fragen.

1. Wie überprüfe ich alle Dateien also auch die im Unterverzeichniss?

2. Wie soll das funktionieren mit dem Updatefortschritt?
 

stroyer

Aktives Mitglied

AW: Update überlegung

Am sinnvollsten finde ich es, wenn du auf dem lokalen auch eine Art update.php oder txt liegen hast, die alle aktuell installierten Dateien auflistet. Dadurch kannst du auch per Update Systemdateien löschen. Die Datei wird natürlich nach jedem Update neu generiert.
2) zuerst bestimmst du alle Dateien, die zu updaten sind, dann kannst du die Gesamtdownloadgröße bestimmen. Eventuell ist es auch sinnvoll, die Dateien vor der Übertragung zu zippen.
 

Robbyn-

PHP / Flex Programmierer

AW: Update überlegung

Ok dann noch zum schluss eine ich weiß dumme frage aber ich sehe dort nicht so richtig durch.
Womit listet man alle Dateien auf? Ich weiß es hat was mit readdir und opendir zu tun aber ich habe es noch nicht so recht verstanden den Sinn dahinter. Vielleicht ist jemand so gütig und würde es mir kurz erklären?!
 

stroyer

Aktives Mitglied

AW: Update überlegung

Als Anhaltspunkt:
PHP:
        $dir=new DirectoryIterator('.');
        while($dir->valid())
          {
            $d=$dir->current();
            if($d!='index.php'&&$d!='.'&$d!='..')
              {
                echo("$dir<p />");
              }
            $dir->next();
          }
sobald du merkst, dass es ein verzeichnis ist, musst du für das die funktion wieder aufrufen, Stichwort rekursive Funktion
 

Robbyn-

PHP / Flex Programmierer

AW: Update überlegung

Ok habe jetzt folgende Funktion geschrieben und die listet mir auch tatsächlich alle Dateien auf :D

PHP:
public function get_dir($dir){
			$fp = opendir($dir);
			
			while($datei = readdir($fp)){
				if(is_dir("$dir/$datei") && $datei != "." && $datei != ".."){
					
					if(!strpos($datei,'svn')){
						$this->get_dir("$dir/$datei");
					}
				}else{
					if(!strpos($datei,'svn')){
						echo $dir.$datei."<br>";
					}
				}
			}
			closedir($fp);
		}
 

Zampano_

Nicht mehr ganz neu hier

AW: Update überlegung

Das was du suchst ist ein Versionsverwaltungs-Systemen. Das ist ein System wo mehrere Entwickler an den gleichen Sourcen arbeiten und die Änderungen dann abgeglichen werden.
CVS (Concurrent Version System) ist ein sehr bekanntes. Das CVS hat ein so genanntes Repository gegen das sich alle Clients abgeleichen. Dieses Repository kann auch auf einem entfernten Server liegen.

Google mal nach CVS oder besser noch nach dem aktuellen Nachvolger: subversion
http://www.cvshome.org/
http://de.wikipedia.org/wiki/Apache_Subversion
 
Zuletzt bearbeitet:

Chriss1987

me.drinkCoffee();

AW: Update überlegung

Das was du suchst ist ein Versionsverwaltungs-Systemen.[...]

Hi,

wenn ich den TO richtig verstanden habe, entwickeln nicht mehrere Personen an dem Projekt, sondern es ist bereits bei den Anwendern verteilt und soll dort auf die jeweils aktuelle Version geupdatet werden.

Wenn ich richtig gesehen habe, verwendet der TO schon svn...

Duddle schrieb:
aber dann hast du die Hürde, dass der Updater sich selbst nicht überschreiben darf, etc.

AFAIK können sich php-Scripts selbst überschreiben. Ein einfacher Test hat das bestätigt:
overwrite.php
PHP:
<?php
$content = '<?php phpinfo(); ?>';
file_put_contents('overwrite.php', $content);
?>

Ist also ohne Probleme möglich, einem php-Script beizubringen, sich selbst zu ändern! ;) Ich meine sogar, es ist ohne Weiteres möglich die gerade ausgeführte Datei zu löschen.

Schöne Grüße aus dem Sauerland!
Chriss
 

Zampano_

Nicht mehr ganz neu hier

AW: Update überlegung

Ups, dann hab ich das falsch gelesen, sry (war ja auch noch früh^^).

Wenn man den Usern vertraut (weils Kumpels sind z.B.) kann man aber auch die SW-Verteilung über's CVS realisieren. ABER auch nur DANN! :)

Dateien die sich selber löschen sind übrigens möglich, warn's zumindest unter php4x ;)
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.611
Beiträge
1.538.341
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben