2013-05-22 4 views
12

Wenn Sie eine PHP-Datei auf einem Server (zB via SFTP) überschreiben, während es irgendwo bearbeitet wird (vielleicht dauert es ein Skript, das mehrere Sekunden dauert), bricht es das gerade laufende Skript ab oder beendet es sogar nach dem Überschreiben geschieht? Ich denke, ich frage: lädt Apache ein PHP-Skript in den Speicher, bevor es ausgeführt wird (und hält es im Speicher für die Dauer der Ausführung)?Was passiert, wenn Sie ein PHP-Skript bearbeiten, während eine Instanz davon ausgeführt wird?

+2

hängt von Ihrer Plattform ab. Windows neigt dazu, Dateien zu sperren, die verwendet/ausgeführt werden. Unix-ish-Plattformen sind nachsichtiger und erlauben Ihnen, Dateien zu löschen/zu ersetzen, während sie verwendet werden, aber nur "neue" Prozesse sehen die neuen Dateien, und bereits ausführende werden weiterhin die jetzt unsichtbare alte Datei verwenden. –

Antwort

17

lädt Apache ein PHP-Skript in den Speicher, bevor es ausgeführt wird (und hält es im Speicher für die Dauer der Ausführung fest)?

Ja.

+4

Es hängt auch davon ab, ob auf Ihrem Server der APC-Cache aktiviert ist und es TTL- und Speicherbereinigungseinstellungen gibt. Wenn Sie sich hinter einem Load Balancer mit zusätzlichem Caching befinden, kann es zu Verzögerungen kommen. Aber zum größten Teil, ja, es ist im Cache gespeichert und sollte keine Wirkung haben, wenn es an Ort und Stelle bearbeitet wird. Ihr Texteditor speichert die Datei technisch ebenfalls, bis sie auf die Festplatte geschrieben wird. – Ligemer

+1

Was passiert, wenn das Skript über die Befehlszeile ausgeführt wird? Ich nehme an, dass es für die Dauer der Ausführung immer noch in den Speicher geladen wird? – kalenjordan

6

Nichts. Das Skript wurde bereits im kompilierten Zustand in den Speicher geladen - egal wie lange es dauert, der Webserver lädt die neue Datei nur, wenn Sie die Seite aktualisieren.

Verwandte Themen