Bestätigung, dass statische PHP-Variablen nicht über Anfragen bestehen bleiben

8

Ich suche nach Sicherheit, dass statische Variablen NICHT zwischen PHP-Anfragen gespeichert werden. Die folgenden vorherigen Fragen:

statische PHP-Variablen auf mehreren .php-Seiten

bleiben statische Variablen in PHP über die Anfragen bestehen?

Statische Variablen in allen Sitzungen

sagen klar, dass sie es nicht sind, aber sie sind eher im Kontext der Bereitstellung eines Weges zur Aufrechterhaltung des Zustands als einer spezifischen Diskussion dessen, was das erwartete Verhalten ist.

Als Beispiel, wenn ich PHP-Code wie folgt habe:

%Vor%

dann bekomme ich jedes Mal, wenn ich es starte, die Ausgabe von 0123456789. Mein Instinkt / Verständnis von PHP macht mir ziemlich sicher, dass dies der Fall sein muss.

In meinen eigenen Experimenten habe ich einen Apache (Preforking) auf ein Kind heruntergeschaltet, um sicherzustellen, dass die Variable zwischen den Anfragen nicht gespeichert wird. Es wird nicht zwischen den Anfragen erinnert, wie ich es erwarten würde. Aber das ist nur ein Szenario, in dem PHP läuft.

Was ich suche ist:

Ein Link zu einer offiziellen Dokumentation, die besagt, dass dies das erwartete Verhalten ist und sich nicht ändert. Der entsprechende Teil der PHP-Dokumentation erwähnt dies nicht ausdrücklich (außer in den Kommentaren).

Oder ein Beispiel für den Fall, dass statische Variablen für Anfragen wie Webserver oder leistungssteigernde PHP-Frameworks gespeichert werden, die möglicherweise keine statischen Variablen löschen, um die Geschwindigkeit zwischen den Anfragen zu erhöhen.

    
ADW 19.05.2011, 16:58
quelle

3 Antworten

6

PHP behält den Anwendungsstatus zwischen Anforderungen nicht bei. Während eines PHP-Anwendungslebenszyklus wird die Anwendung bei jeder Anfrage neu ausgeführt. Statische Variablen sollen den Wert einer Variablen in einem lokalen Funktionsumfang erhalten, wenn die Ausführung den Bereich verlässt. Nirgends in der Dokumentation wird erwähnt, dass statische Variablen dazu dienen, den Wert über Anforderungen hinweg zu erhalten.

    
GWW 19.05.2011 17:06
quelle
3

Ja, Sie haben recht, statische Variablen oder jede Variable in PHP außer $ _SESSION lebt nur durch eine Anfrage. Aber Sie können es mit $ _SESSION;

tun %Vor%     
Senad Meškin 19.05.2011 17:04
quelle
2

Die Besonderheit von PHP ist, dass jede Anfrage den gesamten PHP-Code neu lädt. Eine statische Methode / Eigenschaft erhält also bei jeder neuen Anfrage ihren Standardwert.

Eine Bestätigung, dass der "ganze php-Code bei jeder Anfrage neu geladen wird" besteht darin, dass Sie eine persistente Methode wie für Ihren Datenbankzugriff finden können, um für jede Anfrage keine neue Verbindung zu Ihrer DB zu erstellen (siehe: mysql_pconnect )

    
Cyril N. 19.05.2011 17:03
quelle

Tags und Links