<code>class Test { public static function test1(){} public static function test2(){} ... } </code>
Bei der Ausführung von PHP-Code werden statische Methoden gescannt, unabhängig davon, ob sie enthalten sind oder nicht , sie sind zu ineffizient und sollten nicht verwendet werden.
Wenn ich include 'Test.php'
werde, scanne ich die Klasse und lade die statischen Methoden in den Speicher. Zu diesem Zeitpunkt sollten alle Methoden in den Speicher geladen werden.
Wenn 2
nicht wahr ist, sollte es beim Aufruf der Methode Test::test1();
in den Speicher geladen werden, wenn zu diesem Zeitpunkt nur die aktuelle Methode geladen wird, oder alle statischen Methoden der aktuellen Klasse?
Hier ist ein Meister, der über Nginx- und PHP-fpm-Prozesse und -Threads gesprochen hat: https://segmentfault.com/q/10...
Wenn dies der Fall ist, bedient ein PHP-FPM-Prozess einen Client, aber wenn die Parallelität zu hoch ist, gibt es dann nicht viele Prozesse? In Bezug auf die Prozesskommunikation gehören Anforderungen von verschiedenen Clients zu unterschiedlichen Prozessen und sollten sich nicht gegenseitig beeinflussen. Im vom Prozess belegten Speicher sollte jedoch ein Cache mit statischen Methoden vorhanden sein. Da es sich um ein blockierendes Single-Thread-Modell handelt, sollte jede Anfrage warten, bis die letzte Anfrage abgeschlossen ist, bevor mit der Ausführung begonnen wird. Wird der Cache der statischen Methode zu diesem Zeitpunkt geleert oder sollte er weiterhin gespeichert werden? Wenn diese Option deaktiviert ist, sollten statische Methoden nicht gemeinsam genutzt werden.