Heim > Artikel > Backend-Entwicklung > Geplante PHP-Aufgaben
PHP ist eine schwach typisierte interpretierte Sprache, die nicht über das Konzept von AppServer verfügt, wie z. B. Java und .Net. Das HTTP-Protokoll kann nur vom Benutzer ausgelöst und aufgerufen werden Nach dem Aufruf wird der Speicher automatisch verlassen. Ohne residenten Speicher gibt es keine Möglichkeit, den Vorgang genau zu timen.
Wenn Sie PHP verwenden müssen, um bestimmte Aufgaben regelmäßig auszuführen, stehen Ihnen die folgenden Methoden zur Verfügung:
1. Crontab unter Linux, geplante Aufgaben unter Windows
2. set_time_limit(0) ;
Ignore_user_abort(true);
Endlosschleife
Erster Typ: PHP-Dateien, die regelmäßig von crontab ausgeführt werden, benötigen im Allgemeinen eine Tabelle, um den Namen jeder Aufgabe und die aufzuzeichnen aktuelle Prozess-ID, Aktualisierungszeit und Prozessstart-ID und andere Informationen. Der Stapelverarbeitungsprozess umfasst: Vorbereitung, Ausführung und Nachbearbeitung. Der gesamte Verarbeitungsprozess kann OO-Ideen verwenden, um eine Stapelverarbeitungs-Basisklasse zu kapseln, um die Datenverarbeitung zu implementieren.
Die zweite Methode: Auslösen der Ausführung durch Zugriff auf diese Datei. Nach dem Neustart des Apache-Servers oder des Neustarts des Computers (Windows-Umgebung) besteht ein Problem mit der Beendigung. Ein Beispiel lautet wie folgt:
ignore_user_abort(true); // 设置关闭浏览器后也可执行 set_time_limit(0); // 设置相应时间无限制,原默认30s function write_txt() { $filename = 'test.txt'; if (!file_exists($filename)) { $fp = fopen($filename, 'w'); fclose($fp); } $fp = fopen($filename, 'r+'); $str = file_get_contents($filename); $str .= date('Y-m-d H:i:s')."\r\n"; fwrite($fp, $str); fclose($fp); } function do_cron() { write_txt(); sleep(30); } while (1) { do_cron(); }
Connection_aborted() – Prüft, ob die Verbindung zum Client getrennt wurde und gibt 1 zurück, andernfalls wird 0 zurückgegeben
Connection_status – Gibt das Statusbit der Verbindung zurück 0 – NORMAL (normal ); 1 – ABORTED (abnormaler Ausgang); 2 – TIMEOUT (Zeitüberschreitung)