Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse der Implementierungsprinzipien geplanter Aufgaben in PHP

Analyse der Implementierungsprinzipien geplanter Aufgaben in PHP

不言
不言Original
2018-06-21 09:57:021435Durchsuche

Dieser Artikel stellt das Implementierungsprinzip geplanter Aufgaben in PHP vor. Freunde, die es benötigen, können darauf verweisen

Eine kurze Einführung in einige relevante Kenntnisse gemäß dem PHP-Handbuch:
1. Verbindungsverarbeitung:
Innerhalb von PHP verwaltet das System den Verbindungsstatus und sein Status hat drei mögliche Situationen:
0 – NORMAL (normal)
1 – ABORTED (abnormaler Ausgang)
2 - TIMEOUT (Timeout)
Wenn das PHP-Skript normal im NORMAL-Zustand ausgeführt wird, ist die Verbindung gültig. Wenn der Remote-Client die Verbindung trennt, wird das Statusflag ABORTED aktiviert. Die Unterbrechung der Remote-Client-Verbindung wird normalerweise dadurch verursacht, dass der Benutzer auf die Schaltfläche STOP klickt. Wenn die Verbindungszeit das Zeitlimit von PHP überschreitet, wird das Statusflag TIMEOUT aktiviert.
Sie können entscheiden, ob das Skript beendet werden muss, wenn der Client die Verbindung trennt. Manchmal ist es praktisch, ein Skript vollständig ausführen zu lassen, auch wenn kein Remote-Browser die Ausgabe des Skripts akzeptiert. Standardmäßig wird das Skript beendet, wenn die Remote-Client-Verbindung unterbrochen wird. Diese Verarbeitung kann durch „ignore_user_abort“ in php.ini oder durch die entsprechenden „php_value“-Funktionen „ignore_user_abort“ und „ignore_user_abort()“ in den Apache-.conf-Einstellungen gesteuert werden. Wenn PHP nicht angewiesen wird, Benutzerunterbrechungen zu ignorieren, wird das Skript unterbrochen, es sei denn, über register_shutdown_function() wird eine Shutdown-Trigger-Funktion festgelegt. Wenn der Remote-Benutzer auf die Schaltfläche „STOP“ klickt und das Skript erneut versucht, Daten auszugeben, erkennt PHP über diese Schließtriggerfunktion, dass die Verbindung unterbrochen wurde, und ruft die Schließtriggerfunktion auf.
Skripte können auch durch den integrierten Skript-Timer unterbrochen werden. Das Standard-Timeout-Limit beträgt 30 Sekunden. Dieser Wert kann durch Festlegen von max_execution_time in php.ini oder dem entsprechenden Parameter „php_value max_execution_time“ in den Apache .conf-Einstellungen oder der Funktion set_time_limit() geändert werden. Wenn der Zähler abläuft, wird das Skript ähnlich wie in der oben genannten Verbindungsunterbrechungssituation beendet und die zuvor registrierte Auslöserfunktion zum Herunterfahren wird zu diesem Zeitpunkt ebenfalls ausgeführt. In der Shutdown-Trigger-Funktion können Sie durch Aufrufen der Funktion „connection_status()“ überprüfen, ob das Timeout dazu geführt hat, dass die Shutdown-Trigger-Funktion aufgerufen wurde. Wenn eine Zeitüberschreitung zu einem Aufruf der das Herunterfahren auslösenden Funktion führt, gibt die Funktion 2 zurück.
Zu beachten ist, dass die Zustände ABORTED und TIMEOUT gleichzeitig gültig sein können. Dies ist möglich, wenn PHP angewiesen wird, Benutzer-Exit-Aktionen zu ignorieren. PHP wird weiterhin bemerken, dass der Benutzer die Verbindung getrennt hat, das Skript jedoch weiterhin ausgeführt wird. Bei Erreichen des Laufzeitlimits wird das Skript beendet und die eingestellte Shutdown-Trigger-Funktion ebenfalls ausgeführt. An dieser Stelle werden Sie feststellen, dass die Funktion „connection_status()“ den Wert 3 zurückgibt.
2. Verwandte Funktionen:
intignore_user_abort ([bool-Einstellung])
Diese Funktion legt fest, ob eine Client-Verbindung zum Abbruch eines Skripts führen soll kann ohne Argument aufgerufen werden, um die aktuelle Einstellung nicht zu ändern und nur die aktuelle Einstellung zurückzugeben Status-Bitfeld.
Um eine bestimmte Datei regelmäßig zu aktualisieren, muss das Programm automatisch ausgeführt werden: „ignore_user_abort()“ und „crontab“
ignore_user_abort()-Funktion mit set_time_limit(0) und sleep( Das heißt, das Programm kann automatisch ausgeführt und aktualisiert werden.

ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. 
set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去 
$interval=60*5; // 每隔5分钟运行 
do{ 
$fp = fopen('test.txt','a'); 
fwrite($fp,'test'); 
fclose($fp); 
sleep($interval); // 等待5分钟 
}while(true);

Solange Sie die obige Seite ausführen und dann schließen, wird das Programm weiter ausgeführt.

Unter Linux gibt es eine einfachere Methode, nämlich den Befehl crontab.

Die Funktion des Befehls crontab besteht darin, die Ausführung einiger Befehle in einem bestimmten Zeitintervall zu planen.
crontab-Verwendung: crontab [ -e |. -l |. -r ] Dateiname -e: Aufgabe bearbeiten -l: Aufgabeninformationen anzeigen -r: Informationen zur geplanten Ausführungsaufgabe löschen crontab-Format:
* * * * * Befehl
Befehl, der nach Zeit, Tag, Monat und Woche ausgeführt werden soll
Beispiel für Crontab:
*/5 * * * * lynx //www.php.cn
Zugriff alle 5 Minuten www.php.cn

0 8 * * * lynx //www.php.cn
Besuchen Sie www.php.cn

0 10 6 * 1-5 um 8 Uhr Uhr jeden Morgen lynx //www.php.cn

Besuchen Sie www.jb51.net am 6. eines jeden Monats und von Montag bis Freitag um 10 Uhr.
0 5 7 8 * lynx //www.php .cn

Besuchen Sie www.php.cn am 7. August um 5 Uhr morgens

Einige spezielle Bedeutungen oben:
„*“ steht für alle Zahlen innerhalb des Wertebereichs, „/“ steht für jede Bedeutung, „*/5“ bedeutet alle 5 Einheiten, „-“ bedeutet von einer bestimmten Zahl zu einer bestimmten Zahl, „“, trennt mehrere diskrete Zahlen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

PHP-Parsing für pseudostatische Injektion

Verwendung des Scope-Parsing-Operators von PHP (: :)


Das obige ist der detaillierte Inhalt vonAnalyse der Implementierungsprinzipien geplanter Aufgaben in PHP. 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