Kalle_B: Was passiert beim Aufruf eines PHP-Programms?

Hallöle,

als ich vor Jahren mit PHP begann, schrieb mir jemand aus dem SELFHTML Forum, dass bei Aufruf eines PHP-Programms eine Kopie erstellt und dann abgearbeitet wird.

Ich habe verstanden: Das PHP-Originalskript steht für den nächsten Aufruf zur Verfügung, es könnte ein Problem geben bei überlapptem DB-Zugriff.

Aber das kann nicht stimmen. Wenn ich ein PHP-Skript kopieren möchte, verweigern sich die laufenden Skripte.

Hintergrund:
Für ein Projekt habe ich einen Haupt- und einen Ersatzserver. Der Ersatzserver kann Programme und Daten vom Hauptserver anfordern.

Auf dem Hauptserver wird ein Programm namens kopiere.php aktiviert. Das kann alle PHP-Dateien zum Ersatzserver schicken, aber nicht die Dazei kopiere.php.

Also _kann_ keine Instanz von kopiere.php laufen, sondern nur das Original. Und während des Zugriffs ist es geschützt.

Mein Problem:

Die neue Version des Kopierprogramms selbst bekomme ich nicht auf den Ersatzserver. Wie ist das Problem zu lösen?

LG, Kalle

  1. Moin!

    Also _kann_ keine Instanz von kopiere.php laufen, sondern nur das Original. Und während des Zugriffs ist es geschützt.

    Nein.

    Das hier funktioniert:

    <?php  
      
    echo "Hello! <pre>";  
    echo htmlspecialchars(file_get_contents(__FILE__));  
    echo "</pre> Bye!";  
      
    ?>
    

    Die neue Version des Kopierprogramms selbst bekomme ich nicht auf den Ersatzserver. Wie ist das Problem zu lösen?

    Du machst irgendetwas falsch. Was, das steht im Kopiercode.

    - Sven Rautenberg

  2. Hallo,

    als ich vor Jahren mit PHP begann, schrieb mir jemand aus dem SELFHTML Forum, dass bei Aufruf eines PHP-Programms eine Kopie erstellt und dann abgearbeitet wird.

    eine Kopie wovon? Und was für eine Kopie?
    Ja, man kann es in gewisser Weise als Kopie bezeichnen, wenn die Scriptdatei in den Arbeitsspeicher übertragen und dort übersetzt, "interpretiert" und die Anweisungen ausgeführt werden.

    Ich habe verstanden: Das PHP-Originalskript steht für den nächsten Aufruf zur Verfügung, es könnte ein Problem geben bei überlapptem DB-Zugriff.

    Die eigentliche Scriptdatei wird ja nur gelesen, nicht verändert. Es hängt daher von der jeweils plattformspezifischen Implementierung von PHP ab, ob die Datei exklusiv geöffnet wird oder im Sharing-Mode. Shared-Read-Denied-Write wäre hier wohl die sinnvollste Option.
    Was das Script zur Laufzeit selbst für Systemressourcen verwendet, und wie die gegen konkurrierende Zugriffe abgesichert werden, ist teils eine Frage der PHP-Implementierung, teils eine Frage des Scripts selbst.

    Aber das kann nicht stimmen. Wenn ich ein PHP-Skript kopieren möchte, verweigern sich die laufenden Skripte.

    Auf welchem System? Mit welchem Beispielcode? Versucht dein Kopierprogramm womöglich, auch die Quelldatei exklusiv zu öffnen?

    Also _kann_ keine Instanz von kopiere.php laufen, sondern nur das Original. Und während des Zugriffs ist es geschützt.

    Die Aussage ergibt so keinen Sinn. Von Instanzen redet man nur, wenn man mehrere gleichartige, voneinander unabhängige Prozesse oder Datensätze im Arbeitsspeicher meint. Der Code, der dabei ausgeführt wird, ist *immer* eine Kopie der ursprünglichen Datei.

    Die neue Version des Kopierprogramms selbst bekomme ich nicht auf den Ersatzserver. Wie ist das Problem zu lösen?

    Manuell?

    So long,
     Martin

    --
    Niemand ist überflüssig: Er kann immer noch als schlechtes Beispiel dienen.
    1. hi,

      »» Die neue Version des Kopierprogramms selbst bekomme ich nicht auf den Ersatzserver. Wie ist das Problem zu lösen?

      Manuell?

      Manuelle Überarbeitung des Datensicherungs-Konzepts ;-)

      Evntl. den Einsatz professioneller Software wie rsync in Erwägung ziehen...

      SCNR,
      Hotte

      --
      Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.