Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie geplante Aufgaben in PHP, um die Hintergrundverarbeitung besser abzuschließen

So implementieren Sie geplante Aufgaben in PHP, um die Hintergrundverarbeitung besser abzuschließen

WBOY
WBOYOriginal
2023-06-27 10:09:121537Durchsuche

Mit der kontinuierlichen Entwicklung des Internetgeschäfts nimmt auch die Anzahl der Hintergrundverarbeitungsaufgaben zu. Um diese Aufgaben besser bewältigen zu können, muss PHP auch die Funktion geplanter Aufgaben implementieren können. In diesem Artikel erfahren Sie, wie Sie geplante Aufgaben in PHP implementieren und Hintergrundverarbeitungsaufgaben besser erledigen können.

1. Was ist eine geplante Aufgabe? Eine geplante Aufgabe bezieht sich auf die Ausführung einer bestimmten Aufgabe zu einem bestimmten Zeitpunkt, die einmalig oder regelmäßig erfolgen kann. Bei der Backend-Aufgabenverarbeitung ist es häufig erforderlich, eine Funktion regelmäßig auszuführen oder E-Mails regelmäßig zu versenden usw.

2. So implementieren Sie geplante Aufgaben in PHP

Cron-Ausdruck
  1. Um geplante Aufgaben in PHP zu implementieren, werden Cron-Ausdrücke im Allgemeinen verwendet, um anzugeben, wann eine Aufgabe ausgeführt werden soll. Die Syntax eines Cron-Ausdrucks besteht aus 6 oder 7 Feldern (Sekunden, Minuten, Stunden, Tage, Monate, Wochen, Jahre), wobei jedes Feld durch Leerzeichen getrennt ist.

Zum Beispiel ist das Folgende ein Cron-Ausdruck:

* 0/15 10,18 * * ?

Dieser Ausdruck bedeutet: Jeden Tag um 10 und 18 Uhr Aufgaben am 0. und 15. ausführen Minuten. * 0/15 10,18 * * ?

这个表达式的意思是:每天的上午10点和下午6点的第0分、第15分执行任务。

  1. 计划任务

PHP本身并没有内置的定时任务功能,但是可以通过操作系统的计划任务来实现。在Linux系统中,可以使用crontab命令来配置计划任务。

比如,要在每天10点执行一个PHP脚本file.php,可以通过下面的命令来创建计划任务:

crontab -e

然后添加如下的一行:

0 10 * * * php /path/to/file.php

Geplante Aufgaben

PHP selbst verfügt nicht über eine integrierte Funktion für geplante Aufgaben, kann jedoch über die geplanten Aufgaben des Betriebssystems implementiert werden. In Linux-Systemen können Sie den Befehl crontab verwenden, um geplante Aufgaben zu konfigurieren.
  1. Um beispielsweise jeden Tag um 10 Uhr ein PHP-Skript file.php auszuführen, können Sie mit dem folgenden Befehl eine geplante Aufgabe erstellen:
crontab -e

Dann fügen Sie Folgendes hinzu Zeile:

0 10 * * * php /path/to/file.php

Jedes Feld in dieser Befehlszeile repräsentiert: Minuten (0), Stunden (10), Tage (

) , Monate (

), Woche (*) sind allesamt willkürliche Werte, die die Ausführung jeden Tag um 10 Uhr angeben. Die letzte PHP-Datei /path/to/file.php stellt die auszuführende PHP-Skriptdatei dar.
  1. Pakete von Drittanbietern

Zusätzlich zur Verwendung der geplanten Aufgaben des Betriebssystems gibt es viele PHP-Pakete von Drittanbietern, die die Funktion geplanter Aufgaben implementieren können. Beispielsweise kann die Swoole-Erweiterung von PHP problemlos Timer-Aufgaben implementieren.

Das Folgende ist ein Beispiel:
    $serv = new SwooleHttpServer("127.0.0.1", 9501);
    
    $serv->on('WorkerStart', function($serv, $worker_id) {
        if ($worker_id == 0) {
            // 每隔10秒执行一次
            swoole_timer_tick(10000, function() {
                //todo
            });
        }
    });
    
    $serv->start();
  1. Dieser Code kann eine geplante Aufgabe implementieren, die alle 10 Sekunden ausgeführt wird, und die Aufgaben, die verarbeitet werden müssen, können in der Rückruffunktion ausgeführt werden.
3. So erledigen Sie Hintergrundverarbeitungsaufgaben besser

Multithreading

  1. Bei der Verarbeitung von Hintergrundaufgaben ist die Datenmenge, die möglicherweise verarbeitet werden muss, sehr groß und die Verarbeitungszeit ist auch sehr lang Unabhängig voneinander können Sie die Verwendung von Multithreading in Betracht ziehen, um die Effizienz der Aufgabenverarbeitung zu verbessern.
PHP selbst ist eine Single-Threaded-Sprache, aber wir können die PCNTL-Bibliothek oder die Swoole-Erweiterung verwenden, um Multi-Processing zu implementieren.

Asynchrone Verarbeitung

Bei Hintergrundverarbeitungsaufgaben sind viele Vorgänge E/A-Vorgänge, z. B. das Senden von E-Mails, Datenbankabfragen usw. Diese Vorgänge blockieren Threads und verringern die Effizienz der Aufgabenverarbeitung.

Um dieses Problem zu vermeiden, können Sie die asynchrone Verarbeitung verwenden. Sie können Bibliotheken von Drittanbietern wie swoole und ReactPHP verwenden, um die asynchrone Verarbeitung zu implementieren. 🎜🎜🎜Warteschlange🎜🎜🎜Wenn Sie bei der Verarbeitung von Aufgaben diese nacheinander nach bestimmten Regeln ausführen müssen, können Sie die Verwendung einer Warteschlange in Betracht ziehen. Wenn beispielsweise eine Reihe von E-Mails gesendet werden müssen, können Sie die E-Mails in die Warteschlange stellen und sie dann einzeln zum Senden herausnehmen. 🎜🎜Zu den gängigen Warteschlangenbibliotheken gehören Redis, Beanstalkd usw. 🎜🎜4. Zusammenfassung🎜🎜In diesem Artikel wird erläutert, wie PHP geplante Aufgaben implementiert und wie Hintergrundverarbeitungsaufgaben besser ausgeführt werden können. Die Effizienz und Stabilität der Hintergrundaufgabenverarbeitung kann durch den Einsatz geplanter Aufgaben, Pakete von Drittanbietern, Multithreading, asynchrone Verarbeitung und Warteschlangen verbessert werden. 🎜

Das obige ist der detaillierte Inhalt vonSo implementieren Sie geplante Aufgaben in PHP, um die Hintergrundverarbeitung besser abzuschließen. 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