Stellen Sie sicher, dass die statischen PHP-Variablen nicht über mehrere Anfragen hinweg bestehen bleiben
P粉567281015
P粉567281015 2023-10-30 09:06:47
0
1
776

Ich suche nach einer Garantie, dass zwischen PHP-Anfragen keine statischen Variablen gespeichert werden. Hier sind die vorherigen Fragen:

Statische PHP-Variablen über mehrere .php-Seiten hinweg

Bleiben statische Variablen in PHP über Anfragen hinweg bestehen?

Statische Variablen über Sitzungen hinweg

Um es klarzustellen, das ist nicht der Fall, aber es geht mehr darum, eine Möglichkeit zur Aufrechterhaltung des Zustands zu bieten, als um eine konkrete Diskussion des erwarteten Verhaltens.

Zum Beispiel, wenn mein PHP-Code wie folgt lautet:

function myfunc()
{
    static $a=0;
    print $a++;
}

for ($i=0;$i<10;$i++) myfunc();

Dann erhalte ich jedes Mal, wenn ich es ausführe, eine Ausgabe von 0123456789. Meine Intuition/mein Verständnis von PHP macht mich ziemlich sicher, dass dies der Fall sein muss.

In meinen eigenen Experimenten habe ich einen (vorab geforkten) Apache in einen untergeordneten Prozess heruntergefahren, um sicherzustellen, dass die Variable zwischen Anfragen nicht gespeichert wurde. Wie ich erwarten würde, wird es zwischen den Anfragen nicht gespeichert. Dies ist jedoch nur ein Szenario, in dem PHP ausgeführt wird.

Was ich suche ist:

Link zur offiziellen Dokumentation, die besagt, dass dies ein erwartetes Verhalten ist und sich nicht ändern wird. In den relevanten Teilen der PHP-Dokumentation wird dies nicht explizit erwähnt (außer in den Kommentaren).

Wenn statische Variablen über mehrere Anfragen hinweg gespeichert werden (z. B. ein Webserver oder ein leistungssteigerndes PHP-Framework), werden statische Variablen möglicherweise nicht gelöscht, um die Geschwindigkeit zwischen Anfragen zu verbessern.

P粉567281015
P粉567281015

Antworte allen(1)
P粉654894952

PHP 不保留请求之间的应用程序状态。在 PHP 应用程序生命周期中,应用程序会根据每个请求重新执行。静态变量旨在当执行离开作用域时在局部函数作用域中保留变量的值。文档中没有任何地方提到静态变量旨在跨请求保留值。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage