Heim  >  Artikel  >  PHP-Framework  >  Lassen Sie uns darüber sprechen, wie Sie geplante Aufgaben in Swoole implementieren

Lassen Sie uns darüber sprechen, wie Sie geplante Aufgaben in Swoole implementieren

PHPz
PHPzOriginal
2023-03-28 10:17:352132Durchsuche

Swoole ist ein hervorragendes asynchrones Framework für die PHP-Sprache. Es bietet PHP-Entwicklern die Möglichkeit, hohe Parallelität, hohe Leistung, Verteilung und andere Anforderungen zu bewältigen, indem es die zugrunde liegende native API bereitstellt. Bei Swoole sind geplante Aufgaben eine sehr häufige Anforderung. In diesem Artikel wird erläutert, wie geplante Aufgaben in Swoole implementiert werden.

1. Swoole-Timer

1.1 Überblick über den Swoole-Timer

Swoole bietet eine sehr praktische Timer-Funktion, mit der Aufgaben nach einer bestimmten Zeit ausgeführt werden können. Der Swoole-Timer verwendet nicht den vom System bereitgestellten Timer, sondern implementiert die Timer-Funktion selbst.

1.2 Swoole-Timer-Syntax

Um den Swoole-Timer zu verwenden, müssen Sie zwei Funktionen beherrschen:

(1) swoole_timer_tick

Diese Funktion kann die Aufgabe zur Ausführung der Timer-Schleife realisieren und die Aufgabe wird zu jedem angegebenen Zeitpunkt ausgeführt. Die Syntax lautet wie folgt:

$timer_id = swoole_timer_tick(2000, function () {
  //这里是你要执行的任务
});

Im obigen Code bedeutet der erste Parameter 2000 der Funktion swoole_timer_tick, dass die Aufgabe alle 2000 ms ausgeführt wird.

(2) swoole_timer_after

Diese Funktion kann einen Timer implementieren, um eine Aufgabe auszuführen und sie nach Erreichen der angegebenen Zeit auszuführen. Die Syntax lautet wie folgt:

$timer_id = swoole_timer_after(2000, function () {
  //这里是你要执行的任务
});

Im obigen Code bedeutet der erste Parameter 2000 der Funktion swoole_timer_after, dass eine Aufgabe nach 2000 ms ausgeführt wird.

1.3 Swoole Timer-Beispiel

Das Folgende ist ein Beispielcode, der Swoole Timer verwendet, um einen Timer zu implementieren:

<?php
$timer_id = swoole_timer_tick(2000, function () {
echo "定时器执行任务".PHP_EOL;    
});
//延迟10秒钟后清除定时器
swoole_timer_after(10000, function () use ($timer_id){
swoole_timer_clear($timer_id);
echo "清除定时器".PHP_EOL;
});
?>

Im obigen Code wird die Funktion swoole_timer_tick alle 2 Sekunden ausgeführt und gibt „Timer-Ausführungsaufgabe“ aus. Verwenden Sie die Funktion swoole_timer_after, um einen Task-Clear-Timer zu erstellen, der nach 10 Sekunden ausgeführt wird und „clear timer“ ausgibt. 2. Geplante Aufgabe von Swoole Crontab

2.2 Swoole Crontab-SyntaxUm Swoole Crontab verwenden zu können, müssen Sie die folgenden Funktionen kennen:

(1) swooleCoroutineCron::add()

Verwenden Sie diese Funktion, um eine geplante Aufgabe hinzuzufügen. Beispiel:

$cron = new swoole\Coroutine\Cron();
$cron->add(&#39;/1 *&#39;, function () {
//这里是你要执行的任务
});
$cron->start();

Im obigen Code wird eine geplante Aufgabe hinzugefügt, um die angegebene Aufgabe jede Minute auszuführen.

(2) Von Cron-Aufgaben unterstützte Zeitformate

Cron-Aufgaben unterstützen die folgenden Zeitformate:

Formatbeschreibung:

Minuten (0-59) Stunden (0-23) Tage (1-31) Monate (1 - 12) Woche (0-7)

Unter diesen stehen „Woche“ 0 und 7 für Sonntag und 1-6 für Montag bis Samstag.

2.3 Swoole Crontab-Beispiel

Das Folgende ist ein Beispielcode für die Verwendung von Swoole Crontab zum Implementieren geplanter Aufgaben:

<?php
$cron = new swoole\Coroutine\Cron();
$cron->add(&#39;/1 *&#39;, function () {
echo &#39;计划任务执行&#39;.PHP_EOL;
});
$cron->start();
?>

Fügen Sie im obigen Code eine geplante Aufgabe hinzu, führen Sie die angegebene Aufgabe jede Minute aus und geben Sie „geplante Aufgabenausführung“ aus. .

3. Swoole-Prozess, geplante Coroutine-Aufgaben

Zusätzlich zu Timer-Timer- und Crontab-geplanten Aufgaben kann Swoole auch Prozesse oder Coroutinen verwenden, um geplante Aufgaben umzusetzen.

3.1 Geplante Aufgabe des Swoole-Prozesses

Die Schritte zur Verwendung des Swoole-Prozesses zur Implementierung geplanter Aufgaben sind wie folgt: (1) Prozess erstellen

$process = new swoole_process(function () {
//任何你想执行的任务
});

(2) Prozess starten

$process->start();

( 3) Stellen Sie den Timer ein

swoole_timer_tick(2000, function ($timer_id, $params) use ($process) {
if (!$process->isRunning()) {
    echo "进程已结束".PHP_EOL;
    swoole_timer_clear($timer_id);
}
});

Im obigen Code wird ein Prozess erstellt, gestartet und verwendet dann die Funktion swoole_timer_tick, um den Timer für den Prozess einzustellen und alle 2 Sekunden zu prüfen, ob der Prozess ausgeführt wird.

3.2 Geplante Aufgabe der Swoole-Coroutine

Die Schritte zur Verwendung der Swoole-Coroutine zum Implementieren geplanter Aufgaben lauten wie folgt:

(1) Erstellen Sie eine Coroutine

$cid = go(function () {
//任何你想执行的任务
});

(2) Stellen Sie den Timer ein

swoole_timer_tick(2000, function ($timer_id, $params) use ($cid) {
if (!swoole_coroutine_exists($cid)) {
    echo "协程已结束".PHP_EOL;
    swoole_timer_clear($timer_id);
}
});

Erstellen Sie im obigen Code Erstellen eine Coroutine, und verwenden Sie dann die Funktion swoole_timer_tick, um einen Timer für die Coroutine festzulegen und zu prüfen, ob die Coroutine alle 2 Sekunden ausgeführt wird.

4. Zusammenfassung

In diesem Artikel werden drei Methoden zum Implementieren geplanter Aufgaben in Swoole vorgestellt: Timer-Timer, geplante Crontab-Aufgaben und -Prozesse sowie geplante Coroutine-Aufgaben. Entwickler können die geeignete Methode entsprechend ihren eigenen Anforderungen auswählen, um die Funktion geplanter Aufgaben zu implementieren. Ich glaube, dass die Leser durch die Einführung dieses Artikels die Methode zur Implementierung geplanter Aufgaben in Swoole beherrschen und hoffe, dass er den Lesern bei der Verwendung des Swoole-Frameworks hilfreich sein wird.

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie geplante Aufgaben in Swoole implementieren. 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