Heim  >  Artikel  >  Backend-Entwicklung  >  Warum unterstützt PHP keine Timer?

Warum unterstützt PHP keine Timer?

藏色散人
藏色散人Original
2019-05-22 10:57:004255Durchsuche

Es gibt zwei gängige Timer: Einer wird regelmäßig ausgeführt, z. B. wird jeden Tag um drei Uhr morgens ein Bericht ausgegeben; der andere wird nach einer bestimmten Zeit (einmal) ausgeführt, z. B. bei einer täglichen Anmeldung wird fünf Minuten nach der Anmeldung eines Mitglieds im System vergeben. Die beiden Situationen entsprechen den Befehlen cron und at in der Shell, die den Funktionen setInterval und setTimeout in JavaScript ähneln (streng genommen wird setInterval regelmäßig ausgeführt und die Ausführung zu einem bestimmten Zeitpunkt muss selbst erledigt werden).

Warum unterstützt PHP keine Timer?

PHP-Programmierer, die Webentwicklung betreiben, sollten mit den beiden Timer-Funktionen in JavaScript vertraut sein. Die Rückkehr zur PHP-Ebene ist etwas verblüfft:

Es gibt Sleep in PHP, aber es ist keine (eingebaute) Timer-Funktion verfügbar. Die Schlaffunktion kann dies kaum tun, aber sie führt dazu, dass der Prozess blockiert wird und während dieser Zeit keine anderen Dinge tun kann (oder nicht mehr reagiert). Warum stellt PHP die Timer-Funktion nicht zur Verfügung?

Ursache

Ich persönlich glaube, dass der wesentliche Grund, warum PHP keine Timer in der Webentwicklung verwenden kann, das Fehlen einer kontrollierbaren Betriebsumgebung mit residentem Speicher ist. Zwei wichtige Punkte: erstens residenter Speicher und zweitens steuerbar. Im CGI-Modus wird der Prozess direkt nach der Ausführung des Skripts beendet und es kann nicht erwartet werden, dass er die Aufgabe zu einem bestimmten Zeitpunkt ausführt. Im PHP-FPM-Modus befindet sich der Prozess (meistens) im Speicher, ist jedoch nicht kontrollierbar.

Unkontrollierbar bedeutet, dass der Prozess, der PHP ausführt, nicht vom PHP-Code beeinflusst wird und der Eintrittspunkt und die Beendigungszeit des Prozesses durch zusätzliche Programme gesteuert werden. Im FPM-Modus unterbrechen beispielsweise die Exit- und Die-Funktionen im PHP-Skript nur die Ausführung des Skripts und haben keine besonderen Auswirkungen auf den Ausführungsprozess des Skripts (mit Ausnahme von Speicherlecks). Das von PHP-Entwicklern geschriebene Skript ist der Ausführungskörper des Prozesses. Nach der Ausführung wird es aus dem Ausführungskontext des Prozesses entladen. In diesem Fall wird der Zeitpunkt der Ausführung des PHP-Skripts immer noch von außen bestimmt. Wenn keine externe Anforderung vorliegt, liegt der PHP-Code still auf der Festplatte, ohne etwas zu tun, und es handelt sich um eine geplante Aufgabe.

Da PHP hauptsächlich auf die Webentwicklung ausgerichtet ist, ist der Ausführungsmodus von PHP stabil und zuverlässig und die Entwicklungseffizienz ist schnell. Durch das Weglassen des Ressourcenfreigabeschritts können beispielsweise viel Arbeitsaufwand und Fallstricke bei der Entwicklung vermieden werden. Denken Sie an einige Bibliothekscodes von Drittanbietern, die Zeitzonen, Zeichenkodierungen usw. ändern und diese nicht wiederherstellen. In einer Umgebung mit residentem Speicher führt dies mit ziemlicher Sicherheit zu Problemen bei nachfolgenden Anforderungen. Im FPM-Modus wird dieser Fallstrick jedoch unbeabsichtigt geglättet, was viel Debugging-Zeit spart und einen erheblichen Beitrag dazu leistet, dass Programmierer ihren Haaransatz behalten können.

Das obige ist der detaillierte Inhalt vonWarum unterstützt PHP keine Timer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn