Schmidt: Update für PHP-Programm

Hallo. Ich habe ein PHP Programm geschrieben (ohne grafische Oberfläche).
Ich möchte nun eine Updatefunktion einbauen, sodass sich mein PHP Programm automatisch über das Internet updatet, wenn es gestartet wird.
Ich habe nur keine Idee wie ich das realisieren soll.

Das Programm müsste irgendwie prüfen ob eine neuere Version auf dem Server liegt und diese dann herunterladen.

Aber wie soll es dann eingefügt werden?
Ich würde auch gerne nur die zusätzlichen oder geänderten Quelltextabschnitte herunterladen lassen, damit so wenig wie möglich übertragen werden muss.
Hat jemand eine Idee?

Danke

  1. Grüße,

    Hallo. Ich habe ein PHP Programm geschrieben (ohne grafische Oberfläche).
    Ich möchte nun eine Updatefunktion einbauen, sodass sich mein PHP Programm automatisch über das Internet updatet, wenn es gestartet wird.
    Ich habe nur keine Idee wie ich das realisieren soll.

    ich hielt mich bisher für einen beinahe-fortgeschrittenen, aber was ich da lese scheit mir etwas.. gm.. seltsam. habe ich eine riesenlücke in meinem wissen?

    MFG
    bleicher

    --
    __________________________-
    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
    http://www.sexgott-or-not.com/?test=428054
    1. ich hielt mich bisher für einen beinahe-fortgeschrittenen, aber was ich da lese scheit mir etwas.. gm.. seltsam. habe ich eine riesenlücke in meinem wissen?

      Nö, vielleicht etwas zu viel Rost im Gewissen.
      Rootkits basteln ist ja nicht verboten. Aber man darf hier auch schweigen.

      mfg Beat

      --
      Selber klauen ist schöner!
      1. Grüße,

        Nö, vielleicht etwas zu viel Rost im Gewissen.
        Rootkits basteln ist ja nicht verboten. Aber man darf hier auch schweigen.

        hä?

        MFG
        bleicher

        --
        __________________________-
        Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
        http://www.sexgott-or-not.com/?test=428054
      2. Rootkits basteln ist ja nicht verboten. Aber man darf hier auch schweigen.

        mfg Beat

        Ich hatte mich schon gewundert, warum keiner antwortet, aber jetzt verstehe ich.-Mir wird böses unterstellt.

        Ich hatte schon angefangen mich zu rechtfertigen und zu erläutern, was ich damit mache, aber mir wird klar, dass eine Updatefunktion an sich nichts schlimmes ist.
        Bei fragen wie "Wie kann ich im Hintergrund Programme öffnen?" oder "Wie kann ich den PC zum absturz brigen?" oder so etwas wäre Skepsis angebracht, aber eine Updatefunktion lässt überhaupt nicht auf schädigende Programme schließen.

        Die Rootkit Unterstellung hat weder Hand noch Fuß.

        1. Grüße,
          meine skepsis beruht qauf der tatsache dass man php selten für "programme verwendet". vor allem ohne GUI.
          auch dein problem ist mir sletsam - wen du etwas "teilweise" updaten willst, nutze die PHP-normale aufteilung des "programms" in zig kleinere abschnitte die als einzelne dateichen rumliegen !?
          MFG
          bleicher

          --
          __________________________-
          Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
          http://www.sexgott-or-not.com/?test=428054
          1. meine skepsis beruht qauf der tatsache dass man php selten für "programme verwendet". vor allem ohne GUI.

            Hahaha und wenn es dann mal einer tut, dann muss er böse Absichten haben, oder was?
            Das macht keinen Sinn.
            Es ist selten, dass Menschen um 3Uhr morgens Joggen gehen. Vor allem ohne Hemd. Du würdest diesen Menschen also böses unterstellen?

            Um mich deiner Skepsis zu entziehen: Welche Programmiersprache, die Open Source ist und ich nicht von Grund auf mühselig erlernen muss (habe PHP Kenntnisse), soll ich denn benutzen um mich nicht verdächtig zu machen?

            auch dein problem ist mir sletsam - wen du etwas "teilweise" updaten willst, nutze die PHP-normale aufteilung des "programms" in zig kleinere abschnitte die als einzelne dateichen rumliegen !?

            Ich verstehe nicht, was du mit "PHP-normale aufteilung" meinst.
            Ich könnte jeden Befehl in eine Datei packen und eine Hauptdatei machen, die alle Dateien per include einbindet. Ist es das, was du meinst?
            Und soll ich bei einem Update dann die entsprechenden Dateien überschreiben?
            Das wäre ein Möglichkeit.
            Vielleicht gibt es eine Elegantere.
            Aber danke schon mal für diese Idee.

            Gruß

            1. meine skepsis beruht qauf der tatsache dass man php selten für "programme verwendet". vor allem ohne GUI.

              Hahaha und wenn es dann mal einer tut, dann muss er böse Absichten haben, oder was?

              Jetzt mach mal halblang;

              Das was du suchst, automatisches (=nicht kontrolliertes) Nachladen von aktuellen Versionen, halte ich für gefährlich.
              Wenn ich dir keine üblen Absichten unterstelle, dann doch ein gehöriges Mass an Dummheit.

              Updates sind viel zu komplex, und sollten immer kontrolliert erfolgen.
              Ich weiss ja nicht, was und von welchen Servern du dir da automatisch installieren willst, aber du schiesst dir garantiert irgendwann in den Fuss, auch wenn du alles richtig machen solltest.

              mfg Beat

              --
              Selber klauen ist schöner!
              1. Wenn ich dir keine üblen Absichten unterstelle, dann doch ein gehöriges Mass an Dummheit.

                Also jetzt reicht es langsam!
                Ich verbitte mir solche Beleidigungen!

                Das was du suchst, automatisches (=nicht kontrolliertes) Nachladen von aktuellen Versionen, halte ich für gefährlich.

                Dann versuche es im zivilisierten Rahmen zu vermitteln!

                Updates sind viel zu komplex, und sollten immer kontrolliert erfolgen.
                Ich weiss ja nicht, was und von welchen Servern du dir da automatisch installieren willst, aber du schiesst dir garantiert irgendwann in den Fuss, auch wenn du alles richtig machen solltest.

                Werd' doch mal konkret, mensch!
                "viel zu komplex" "schießt dir in den Fuß"
                Was meinst du damit genau?

                Was soll denn schief gehen, wenn ich "alles richtig machen sollte"?
                Wenn du nicht genau sagst, was deine Bedenken sind, dann nützt dein >das ist schlecht< auch nichts.

                Lern mal etwas Konstruktiv zu werden.

                1. Updates sind viel zu komplex, und sollten immer kontrolliert erfolgen.
                  Ich weiss ja nicht, was und von welchen Servern du dir da automatisch installieren willst, aber du schiesst dir garantiert irgendwann in den Fuss, auch wenn du alles richtig machen solltest.

                  Werd' doch mal konkret, mensch!
                  "viel zu komplex" "schießt dir in den Fuß"
                  Was meinst du damit genau?

                  Was soll denn schief gehen, wenn ich "alles richtig machen sollte"?
                  Wenn du nicht genau sagst, was deine Bedenken sind, dann nützt dein >das ist schlecht< auch nichts.

                  Lern mal etwas Konstruktiv zu werden.

                  Anwendungen laufen auf Servern, aber nicht notwendig auf den gleich konfigurierten.
                  Serverkonfigurationen können sich ändern.
                  Ein Updateserver kann geknackt werden, wer weiss, was da nachgeladen wird?
                  Wenn es auf dem Client kein komplettes Backzp der letzten lauffähigen Version gibt, kann es die Produktionscode Umgebung zerstören.
                  Nicht immer ist eine neueste Version gefragt.

                  Du machst das für dich oder das Script soll auch von anderen Betrieben werden (in einem anderen Beitrag machst du dir Sorgen wegen offenem Quellcode). Wenn du es für dich machst, lohnt es sich?
                  Wenn mal was schief läuft und du dann Hand anlegen musst...
                  Wenn andere deinen Code ausführen, wie viele reisst du in den Abgrund?
                  Welchen Mechanismus gedenkst du auszuführen, dass originale Code auf deinem Server ankommt?

                  Du sprichst von Bandbreite (das Downloaden von ein paar Patchzeilen ginge schneller). Sorry das scheint mir eine etwas schräge Einstellung.
                  Alle deine Sicherheitsroutinen verschlingen bei weitem mehr Code.
                  Oder ist dein Programm mehrere MB gross? Muss es mehrmals täglich aktualisiert werden?

                  mfg Beat

                  --
                  Selber klauen ist schöner!
                  1. Grüße,

                    Anwendungen laufen auf Servern, aber nicht notwendig auf den gleich konfigurierten.
                    Serverkonfigurationen können sich ändern.

                    da er vom "program" sprach, gehe ich davon aus, dass es eine "userPC"-anwendung ist, oder?

                    MFG
                    bleicher

                    --
                    __________________________-
                    Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
                    http://www.sexgott-or-not.com/?test=428054
            2. Grüße,

              Ich könnte jeden Befehl in eine Datei packen und eine Hauptdatei machen, die alle Dateien per include einbindet. Ist es das, was du meinst?
              Und soll ich bei einem Update dann die entsprechenden Dateien überschreiben?

              das habe ich gemeint

              Das wäre ein Möglichkeit.
              Vielleicht gibt es eine Elegantere.

              was mir ohne nachzudenken einfällt - du packst den code in sqlite, entsprechend sortiert und unterteilt.
              oder du setzst im code "wegweiser" und kansnt dann per regexp die entsprechenden abschnitte ersetzen. wäre aber etwas..gm.. aufwendig.

              mein vorschlag - sqlite und auftrennung in einzelne classen/funktionen.

              und ich unterstellt edir ja nix böses - hab selbst mal was mit php gebastelt.. allerdings mit gui ;p wie gesagt - ist mit bloß seltsam dass du ein "nich tso ohne weiter laufendes packet" baust. ist dir "bambalam" ein begriff?

              MFG
              bleicher

              --
              __________________________-
              Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
              http://www.sexgott-or-not.com/?test=428054
              1. was mir ohne nachzudenken einfällt - du packst den code in sqlite, entsprechend sortiert und unterteilt.
                oder du setzst im code "wegweiser" und kansnt dann per regexp die entsprechenden abschnitte ersetzen. wäre aber etwas..gm.. aufwendig.
                mein vorschlag - sqlite und auftrennung in einzelne classen/funktionen.

                Gute Idee.
                Wie wird das denn bei handelsüblichen Programmen gemacht?

                und ich unterstellt edir ja nix böses - hab selbst mal was mit php gebastelt.. allerdings mit gui ;p wie gesagt - ist mit bloß seltsam dass du ein "nich tso ohne weiter laufendes packet" baust. ist dir "bambalam" ein begriff?

                mit der GUI bin ich auf Anhieb nicht gut zurecht gekommen. Vieleihct hat mir nur der richtige Einstieg gefehlt. Jedenfalls habe ich es dann erst mal gelassen.

                Spitze! Bambalam hatte ich mir mal sehnsüchtig herbeigesehnt, aber nichts gefunden. Ich hatte mich dann damit abgefunden, dass jeder in meinen Quelltext gucken kann. Ein offener Quelltext scheint mir aber vorteilhafter für Updates zu sein, oder?

                Vielen dank nochmal für Bambalam!

    2. ich hielt mich bisher für einen beinahe-fortgeschrittenen, aber was ich da lese scheit mir etwas.. gm.. seltsam. habe ich eine riesenlücke in meinem wissen?

      Hallo.

      Schade, dass du nicht schreibst, was genau dich verwundert/was du nicht verstehst.

      Vielleicht folgendes:
      "Mit PHP lassen sich auch kommandozeilenorientierte Skripte, die vom Internet unabhängig sind, schreiben. Die GTK-Erweiterung stellt sogar eine Programmierschnittstelle für eine grafische Oberfläche zur Verfügung, für die weder ein Webserver noch ein Browser benötigt werden." Quelle:Wikipedia

  2. Hallo

    Hallo. Ich habe ein PHP Programm geschrieben (ohne grafische Oberfläche).

    könntest Du die Rahmenbedingungen etwas genauer abstecken?

    [ ] Handelt es sich um eine Anwendung, die auf einem x-beliebigen Rechner eines
        Anwenders (nicht zwingend Server) installiert ist?
    [ ] Handelt es sich um eine Anwendung, die auf einem x-beliebigen Webserver als
        unterstützendes Skript (CGI, modphp) läuft?
    [ ] Handelt es sich um eine Anwendung, die nur in einem Intranet eingesetzt ist.
    [ ] Handelt es sich um eine Anwendung, die nur von Dir benutzt wird.

    Ansonsten:
    Überprüfe ob neue Version vorhanden ist und alle Voraussetzungen erfüllt sind.
    Wenn nein
        Beende das Update.
    Ende Wenn
    Ermittle die Liste der zu aktualisierenden Dateien.
    Lade diese Dateien in ein temporäres Verzeichnis.
    Wenn Download nicht erfolgreich
        Gebe Fehlermeldung aus.
        Beende das Update.
    Ende Wenn
    Sorge dafür, das vor dem nächsten Start des Programmes die neue Version startet.
    Fertig.

    Freundliche Grüße

    Vinzenz

    1. [X] Handelt es sich um eine Anwendung, die auf einem x-beliebigen Rechner eines

      Anwenders (nicht zwingend Server) installiert ist?
      [ ] Handelt es sich um eine Anwendung, die auf einem x-beliebigen Webserver als
          unterstützendes Skript (CGI, modphp) läuft?
      [ ] Handelt es sich um eine Anwendung, die nur in einem Intranet eingesetzt ist.
      [ ] Handelt es sich um eine Anwendung, die nur von Dir benutzt wird.

      Ansonsten:
      Überprüfe ob neue Version vorhanden ist und alle Voraussetzungen erfüllt sind.
      Wenn nein
          Beende das Update.
      Ende Wenn
      Ermittle die Liste der zu aktualisierenden Dateien.
      Lade diese Dateien in ein temporäres Verzeichnis.
      Wenn Download nicht erfolgreich
          Gebe Fehlermeldung aus.
          Beende das Update.
      Ende Wenn
      Sorge dafür, das vor dem nächsten Start des Programmes die neue Version startet.
      Fertig.

      Danke für dieses Ablaufschema.
      Ich bin aber noch nicht so weit.
      Ich weiß noch nicht wie ich die Aktualisierungen einbringen soll.
      Du sprichst von "zu aktualisierenden Dateien". Ich weiß noch gar nicht ob ich mein Programm überhaupt in Dateien aufteilen soll, die ich dann überschreibe, oder ob ich es nicht anders machen soll.

      Kennst du ein bestimmtes Konzept mit einzelnen Dateien? Kannst du es genauer beschreiben? Was wird auf die Dateien aufgeteilt? Um möglichst kleine Downloads zu haben, müsste ich sehr kleine, dafür aber viele Dateien haben.

      Ich bin gespannt.

      Freundliche Grüße
      Vinzenz

      Danke.

      1. Hallo

        [X] Handelt es sich um eine Anwendung, die auf einem x-beliebigen Rechner eines

        Anwenders (nicht zwingend Server) installiert ist?

        Danke für dieses Ablaufschema.
        Ich bin aber noch nicht so weit.
        Ich weiß noch nicht wie ich die Aktualisierungen einbringen soll.
        Du sprichst von "zu aktualisierenden Dateien". Ich weiß noch gar nicht ob ich mein Programm überhaupt in Dateien aufteilen soll, die ich dann überschreibe, oder ob ich es nicht anders machen soll.

        Du solltest Dich unbedingt mit Software zur Versionskontrolle wie Subversion oder Mercurial vertraut machen.

        Kennst du ein bestimmtes Konzept mit einzelnen Dateien? Kannst du es genauer beschreiben? Was wird auf die Dateien aufgeteilt? Um möglichst kleine Downloads zu haben, müsste ich sehr kleine, dafür aber viele Dateien haben.

        Da sehe ich geringe Probleme. Bei objektorientiertem Ansatz solltest Du jede Klasse in eine eigene Datei packen, falls Du nicht objektorientiert arbeitest, solltest Du Deine Anwendung in Module aufteilen (und dabei feststellen, dass Dir die Objektorientierung hübsch weiterhelfen kann und zu besser wiederverwertbarem Code führt). Bei typischen Dateigrößen im einstelligen (vielleicht auch noch zweistelligen) Kilobyte-Bereich würde ich mir um die Dateigrößen keine Gedanken machen.

        Durch sauber definierte Schnittstellen kannst Du z.B. eine Methode einer Klasse bzw. eine Funktion eines Moduls neuschreiben (bei gleichbleibender Schnittstelle), ohne sonst etwas ändern zu müssen. Somit müsste in einem solchen Fall, z.B. Fehlerbehebung oder Optimierung bei einer Methode bzw. Funktion nur eine einzige Datei ausgetauacht werden.

        Freundliche Grüße

        Vinzenz