Heim  >  Artikel  >  PHP-Framework  >  Kann swoole mehrere Timer einstellen?

Kann swoole mehrere Timer einstellen?

(*-*)浩
(*-*)浩Original
2019-12-16 13:52:172302Durchsuche

Kann swoole mehrere Timer einstellen?

Zuallererst muss der Server in verschiedenen Geschäftssystemen häufig relevante Daten im Hintergrund scannen und entsprechende Statistiken, Benachrichtigungen und andere Vorgänge auslösen.

Zum Beispiel ist es für ein Projektmanagementsystem notwendig, jeden Tag die Ausführung, den Ablaufstatus jeder Aufgabe, den Fortschritt des gesamten Projekts usw. innerhalb einer bestimmten Zeit zu zählen und vorzunehmen entsprechende Benachrichtigungen basierend auf den Statistiken; (Empfohlenes Lernen: Swoole-Video-Tutorial )

Wie programmiert man ein solches Szenario?

Mit gewöhnlichen Programmiermethoden können keine automatische Auslösung und Statistik erreicht werden. Natürlich kommt die einfache Idee dem Cronjob-Mechanismus des Systems zugute. Diese Methode erfordert jedoch mehr menschliche Bedienfaktoren in Bezug auf Konfiguration und Zuverlässigkeit.

Swoole ist eine mit C entwickelte PHP-Erweiterung. Sie kann einen Hochleistungs-Webserver über PHP implementieren. Gleichzeitig verfügt sie über integrierte Timer- und Aufgabenwarteschlangen-Aufgabenfunktionen. Auf diese Weise können Sie basierend auf Swoole die Implementierung auf Programmebene steuern und die Abhängigkeit von externen Tools verringern – unabhängigen Nachrichtenwarteschlangenservern, Tools zur Verwaltung geplanter Aufgaben usw.

Die Stärke von Swoole liegt im Design seines Prozessmodells, das sowohl asynchrone Probleme als auch Parallelität löst.

wird wie folgt verwendet:

swoole_server_addtimer($serv, 10);

Der zweite Parameter ist die Intervallzeit des Timers in Sekunden. Die Mindestgranularität des Swoole-Timers beträgt 1 Sekunde. Unterstützt mehrere Timer. Beachten Sie, dass es nicht zwei Timer mit demselben Intervall geben kann. Nachdem Sie den Timer hinzugefügt haben, müssen Sie eine Rückruffunktion schreiben.

Der spezifische Code lautet wie folgt:

swoole_server_handler($serv, 'onTimer', my_OnTimer);
function my_OnTimer($serv, $interval)
{
  echo "Timer[$interval] is call\n";
}

Das Aufgabenmodul wird verwendet, um einige asynchrone langsame Aufgaben auszuführen, z. B. die Übertragung im Webim. Ähnlich wie bei node.js: Wenn 100.000 Verbindungen vorhanden sind und ein Broadcast gesendet werden soll, wird dieser 100.000 Mal wiederholt. Zu diesem Zeitpunkt kann das Programm nichts tun, keine neuen Verbindungen akzeptieren und keine Pakete empfangen oder senden.

Aber Swoole ist anders, nachdem Sie zum Task-Prozess geworfen wurden, laufen Ihr Reaktor und Ihr Worker weiterhin. Nachdem die Aufgabe abgeschlossen ist, wird der Arbeitsprozess asynchron benachrichtigt, um ihm mitzuteilen, dass die Aufgabe abgeschlossen ist.

Das obige ist der detaillierte Inhalt vonKann swoole mehrere Timer einstellen?. 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