php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.01.2009, 19:21  
Erfahrener Benutzer
 
Registriert seit: 09.07.2008
Beiträge: 577
PHP-Kenntnisse:
Anfänger
SteiniKeule kann nur auf Besserung hoffen
SteiniKeule eine Nachricht über ICQ schicken SteiniKeule eine Nachricht über Skype™ schicken
Standard Updatefunktion

Hallo

ich bin auf der Suche nach einer Updatefunktion. Beispiel:

Ich entwickle auf server 1 und habe eine neue Fertige Version die ich nun bereitstellen will. Wenn jetzt jemand ein Programm verwendet das auf Server 2 ist und unter Updates nach neuen Updates sucht, soll ihm angezeigt werden ob eine neue Version verfügbar ist und diese dann nach bestätigung durch den benutzer von server 2 auch herunter laden und automatisch installieren.
Da ich sicher sein kann dass an Server 2 keiner in den PHP datein den Code verändert möchte ich nicht bestimmte Zeilen ändern sondern die ganze x.php datei lösche und durch die neue ersetzen die von server 1 geladen werden soll. zudem sollen auch die neuen datein geladen werden die auf server 2 noch nicht vorhanden sind.

zu meinen Fragen:

1. Wie kann ich überprüfen ob auf Server 1 eine neue Version verfügbar ist?
2. wie kann ich die Daten von Server 1 auf Server 2 bekommen?
Das ganze MUSS völlig automatisch gehen. Also zu sagen lad dir die Zip runter entpacke dass und lad die datein bei dir hoch ist keine lösung.

gibt es dafür vll sogar funktionen? Habe google schon belästigt, aber nix brauchbares gefunden.

Dankeeee
SteiniKeule
SteiniKeule ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.01.2009, 19:28  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

hmm
meine überlegung wäre:
zu 1.

du stellst ne domain xyz.de/bla/updates/checkupdate.php
zur verfügung.

In die versionen die du austeilst baust du eine prüfung ein die immer diese chekupdate.php ausführt, am besten mit einem GET parameter, indem du die aktuelle version mitlieferst.
die checkupdate überprüft den GET parameter und prüft ob eine aktuellere version vorhanden ist, und gibt entweder Nein oder ja (evtl. mit infos zur neuen version) zurück, der aufrufer prüft die rückgabe und zeigt bei bedarf einen hinweis an.
Screeze ist offline  
Alt 28.01.2009, 19:48  
Erfahrener Benutzer
 
Registriert seit: 09.07.2008
Beiträge: 577
PHP-Kenntnisse:
Anfänger
SteiniKeule kann nur auf Besserung hoffen
SteiniKeule eine Nachricht über ICQ schicken SteiniKeule eine Nachricht über Skype™ schicken
Standard

ok. also ich stell mir das mal so vor. Server1 ist der "host" und server 2 ist der "user" Wenn der user jetzt eine überprüfung will dann geht er auf "update überprüfen" und ruft somit die seite des Hosts auf (www.server1.de/updates/check4update.php?version=$version_vom_user) .ok. aber was bringt mir das? dann weis ich zwar dass eine neue version vefügbar ist, aber ich bekomme die daten nicht auf den server vom User...

Auser... ich mache da eine ifABFRAGE rein

PHP-Code:
if($_GET[version]!= $aktuelle_Version)
{
echo 
"link server1";
}
else
{
echo
"version ist die neuste"

link Server 1 könnte dann ein link auf eine .php datei sein die dann die daten von Server 1 auf server 2 bringt. aber wie schaffe ich das?

zuem hat das ganze den nachteil dass ich nicht mehr auf server 2 bin als user sondern auf server 1 rumsurfe...

na vllt hat ja jemand anderes noch ein paar ideen...
SteiniKeule ist offline  
Alt 28.01.2009, 20:00  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

das bringt dir ne menge?

du schreibst halt auf der user software keinen link der auf server 1 verlinkt, sondern einen http request oder sowas, der z.b. ins admin panel vom user eingebunden wird, und bei bedarf dann im admin panel eine info anzeigt.

Sprich:
die rückgabe des requests wertest du aus, angenommen du gibst im check4update das zurück was du gesagt hast,
wertest du das so aus:

PHP-Code:
if($antwort != "version ist die neuste") {
     
//fenster anzeigen mit z.b einem update button

für den updatebutton dann ein handling, dass die daten läd und bearbeitet.
Screeze ist offline  
Alt 28.01.2009, 20:41  
Erfahrener Benutzer
 
Registriert seit: 09.07.2008
Beiträge: 577
PHP-Kenntnisse:
Anfänger
SteiniKeule kann nur auf Besserung hoffen
SteiniKeule eine Nachricht über ICQ schicken SteiniKeule eine Nachricht über Skype™ schicken
Standard

ich habe nun etwas gegoogelt und mich erkundigt, aber ich werde aus dem request noch nicht schlau. wie kann ich bei server1 (host) in der datei eine rückgabe machen die ich dann mit server2 abfragen kann? ich blicke hinter das requstsystem noch nicht. kann mir da vll jemand weiter helfen?
SteiniKeule ist offline  
Alt 28.01.2009, 20:46  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

du echost auf dem server die antwort, und holst sie dir beim clienten über einen request
z.b. mit
CURL
Screeze ist offline  
Alt 28.01.2009, 21:48  
Erfahrener Benutzer
 
Registriert seit: 09.07.2008
Beiträge: 577
PHP-Kenntnisse:
Anfänger
SteiniKeule kann nur auf Besserung hoffen
SteiniKeule eine Nachricht über ICQ schicken SteiniKeule eine Nachricht über Skype™ schicken
Standard

so nun hab ich mich mal eingelesen und mit einen "groben" überblick geschaffen. falls jemand Ahnung davon hat wär ich sehr erfreut wenn man mich auf Fehler aufmerksam macht. Bisher geht es. also ich bekomme das zurück was ich will.

PHP-Code:
 // erzeugt einen neuen cURL-Handle
$c_handle curl_init('http://steinikeule.any-freehost.de/check4update.php?version=222');
//Wenn die Option CURLOPT_RETURNTRANSFER gesetzt ist, gibt curl_exec( ) den Inhalt der Seite in einem String zurück.
curl_setopt($c_handleCURLOPT_RETURNTRANSFER,1);
//nun kommt der String ab in $page
$page curl_exec($c_handle);
//Diese Funktion beendet die cURL-Session und gibt alle Resourcen frei
curl_close($c_handle);
//und jetzt gebe ich einfach mal das aus was ich bekommen habe um zu sehen ob es das ist, was ich brauche.
echo $page
SteiniKeule ist offline  
Alt 28.01.2009, 22:40  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

Nein das passt soweit.
diese $page verarbeitest du jetzt einfach.
Screeze ist offline  
Alt 28.01.2009, 23:11  
Erfahrener Benutzer
 
Registriert seit: 09.07.2008
Beiträge: 577
PHP-Kenntnisse:
Anfänger
SteiniKeule kann nur auf Besserung hoffen
SteiniKeule eine Nachricht über ICQ schicken SteiniKeule eine Nachricht über Skype™ schicken
Standard

so hab jetzt mal was zusammen gesetzt. leider weis ich nicht mehr weiter...

Also ich möchte eine Datei vom Host-Server auf den User-Server übertragen. Die Datei ist auf dem User-Server noch nicht vorhanden. Hab da jetzt schon einiges versucht und getestet, aber auser dass er mir die lokale-hoste-datei auf 0B setzt (inhalt löscht) komme ich nicht weiter.

Das Grundsystem umfasst im Moment stolze 296 Daten
und was bei $file unten ankommt sieht z.b. so aus:

Code:
./funktionen/tabellen.php
Das wär jetzt eine Datei. könnte der ./ vor dem namen zum prob. werden?

och ich weis ned mehr weiter...
PHP-Code:
<?PHP
  
function read_recursiv($path
   { 
      
$result = array();

      
$handle opendir($path); 

      if (
$handle
      { 
         while (
false !== ($file readdir($handle))) 
         { 
             if (
$file != "." && $file != ".." && $file != "check4update.php" && $file != "update.php"
             { 
                
$name $path "/" $file;
                if (
is_dir($name))
                { 
                   
$ar read_recursiv($name);
                   foreach (
$ar as $value)
                   {
                      
$result[] = $value;
                   }
                } 
                else 
                { 
                   
$result[] = $name;
                } 
             } 
         } 
      } 
      
closedir($handle);
      return 
$result
   } 

   
$data read_recursiv("."); 
 
   echo 
"<b>" count($data) . "Dateien gefunden</b><br>\n";
   foreach(
$data as $value)
   {
     
$file $value;
   
$ftp_server 'www.die-hab-ich-ma-eben-gändert.de';
   
$ftp_user_name 'any';
   
$ftp_user_pass 'muhaha';
// Verbindung aufbauen
$conn_id ftp_connect($ftp_server);

/// Öffne eine Datei zum Lesen

$fp fopen($file'r');

// Verbindung aufbauen
$conn_id ftp_connect($ftp_server);

// Login mit Benutzername und Passwort
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);

// Versuche $file hochzuladen
if (ftp_fput($conn_id$file$fpFTP_ASCII)) {
    echo 
"$file wurde erfolgreich hochgeladen\n";
} else {
    echo 
"$file konnte nicht hochgeladen werden\n";
}

// Verbindung und Verbindungshandler schließen
ftp_close($conn_id);
fclose($fp);
    }
?>
die Fehlermeldung/Ausgabe dazu:
Code:
1Dateien gefunden

Warning:  ftp_fput() [function.ftp-fput]: ./R_16.10.08_.odt: Permission denied in /home/www/xy/hosting/steinikeule/htdocs/update.php on line 57
./R_16.10.08_.odt konnte nicht hochgeladen werden &lt;A HREF="http://ad.adnet.de/adnetc.php?s=3734&amp;w=1&amp;h=1&amp;t=_blank" TARGET="_blank"&gt;&lt;IMG SRC="http://ad.adnet.de/adneti.php?s=3734&amp;w=1&amp;h=1&amp;t=_blank" WIDTH=1 HEIGHT=1 BORDER=0&gt;&lt;/A&gt;
SteiniKeule ist offline  
Alt 29.01.2009, 09:34  
Erfahrener Benutzer
 
Benutzerbild von Screeze
 
Registriert seit: 04.01.2009
Beiträge: 844
PHP-Kenntnisse:
Fortgeschritten
Screeze wird schon bald berühmt werden
Standard

hast du schreibrechte auf dem server?
Screeze ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
updatefunktion php, php updatefu ktion

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:12 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum