Heim PHP-Framework Workerman Verwendung des Worker-Timers (mit Beispielcode)

Verwendung des Worker-Timers (mit Beispielcode)

Nov 25, 2019 pm 02:20 PM
workerman

In der folgenden Spalte des Workerman-PHP-Tutorials wird die Verwendung des Workerman-Timers vorgestellt

Verwendung des Worker-Timers (mit Beispielcode)

Workerman ist ein leistungsstarkes Socket-Server-Kommunikationsframework, das zur schnellen Entwicklung verschiedener Netzwerkanwendungen verwendet wird, einschließlich TCP-, UDP-, Langverbindungs- und Kurzverbindungsanwendungen. Lassen Sie uns die Verwendung des Workerman-Timers vorstellen.

hinzufügen

int \Workerman\Lib\Timer::add(float $time_interval, callable $callback [,$args = array(), bool $persistent = true])
Nach dem Login kopieren

Eine Funktion oder Klassenmethode regelmäßig ausführen

Parameter

time_interval: wie oft ausgeführt werden soll, in Sekunden, unterstützt Dezimalzahlen, ja Genau 0,001, also auf die Millisekunde genau.

Rückruf: Rückruffunktion Hinweis: Wenn die Rückruffunktion eine Methode der Klasse ist, muss die Methode ein öffentliches Attribut sein

Argumente: Die Parameter der Rückruffunktion müssen ein Array sein. und die Array-Elemente sind Parameterwerte

persistent: Ob es persistent ist. Wenn Sie es nur einmal regelmäßig ausführen möchten, übergeben Sie false (eine Aufgabe, die nur einmal ausgeführt wird, wird nach der Ausführung automatisch zerstört, und das ist der Fall Timer::del() muss nicht aufgerufen werden. Der Standardwert ist true, was bedeutet, dass er immer regelmäßig ausgeführt wird.

Rückgabewert

Gibt eine Ganzzahl zurück, die die Timer-ID des Timers darstellt. Dieser Timer kann durch Aufruf von Timer::del($timerid) zerstört werden.

Beispiel

1. Die Timing-Funktion ist eine anonyme Funktion (Abschluss)

use \Workerman\Worker;
use \Workerman\Lib\Timer;
require_once './Workerman/Autoloader.php';

$task = new Worker();
// 开启多少个进程运行定时任务,注意多进程并发问题
$task->count = 1;
$task->onWorkerStart = function($task)
{
    // 每2.5秒执行一次
    $time_interval = 2.5;
    Timer::add($time_interval, function()
    {
        echo "task run\n";
    });
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

2. Die Timing-Funktion ist eine gewöhnliche Funktion

require_once './Workerman/Autoloader.php';
use \Workerman\Worker;
use \Workerman\Lib\Timer;

// 普通的函数
function send_mail($to, $content)
{
    echo "send mail ...\n";
}

$task = new Worker();
$task->onWorkerStart = function($task)
{
    $to = 'workerman@workerman.net';
    $content = 'hello workerman';
    // 10秒后执行发送邮件任务,最后一个参数传递false,表示只运行一次
    Timer::add(10, 'send_mail', array($to, $content), false);
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

3. Die Timing-Funktion ist eine Klassenmethode

require_once './Workerman/Autoloader.php';
use \Workerman\Worker;
use \Workerman\Lib\Timer;

class Mail
{
    // 注意,回调函数属性必须是public
    public function send($to, $content)
    {
        echo "send mail ...\n";
    }
}

$task = new Worker();
$task->onWorkerStart = function($task)
{
    // 10秒后发送一次邮件
    $mail = new Mail();
    $to = 'workerman@workerman.net';
    $content = 'hello workerman';
    Timer::add(10, array($mail, 'send'), array($to, $content), false);
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

Die Timing-Funktion ist eine Klassenmethode (Timer wird innerhalb der Klasse verwendet)

require_once './Workerman/Autoloader.php';
use \Workerman\Worker;
use \Workerman\Lib\Timer;

class Mail
{
    // 注意,回调函数属性必须是public
    public function send($to, $content)
    {
        echo "send mail ...\n";
    }

    public function sendLater($to, $content)
    {
        // 回调的方法属于当前的类,则回调数组第一个元素为$this
        Timer::add(10, array($this, 'send'), array($to, $content), false);
    }
}

$task = new Worker();
$task->onWorkerStart = function($task)
{
    // 10秒后发送一次邮件
    $mail = new Mail();
    $to = 'workerman@workerman.net';
    $content = 'hello workerman';
    $mail->sendLater($to, $content);
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

5. Die Timing-Funktion ist eine statische Methode der Klasse

require_once './Workerman/Autoloader.php';
use \Workerman\Worker;
use \Workerman\Lib\Timer;

class Mail
{
    // 注意这个是静态方法,回调函数属性也必须是public
    public static function send($to, $content)
    {
        echo "send mail ...\n";
    }
}

$task = new Worker();
$task->onWorkerStart = function($task)
{
    // 10秒后发送一次邮件
    $to = 'workerman@workerman.net';
    $content = 'hello workerman';
    // 定时调用类的静态方法
    Timer::add(10, array('Mail', 'send'), array($to, $content), false);
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

6. Timing Die Funktion ist eine statische Methode der Klasse (mit Namespace)

namespace Task;
require_once './Workerman/Autoloader.php';
use \Workerman\Worker;
use \Workerman\Lib\Timer;

class Mail
{
    // 注意这个是静态方法,回调函数属性也必须是public
    public static function send($to, $content)
    {
        echo "send mail ...\n";
    }
}

$task = new Worker();
$task->onWorkerStart = function($task)
{
    // 10秒后发送一次邮件
    $to = 'workerman@workerman.net';
    $content = 'hello workerman';
    // 定时调用带命名空间的类的静态方法
    Timer::add(10, array('\Task\Mail', 'send'), array($to, $content), false);
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

7. Zerstöre den aktuellen Timer im Timer (verwende die Abschlussmethode, um $timer_id zu übergeben)

use \Workerman\Worker;
use \Workerman\Lib\Timer;
require_once './Workerman/Autoloader.php';

$task = new Worker();
$task->onWorkerStart = function($task)
{
    // 计数
    $count = 1;
    // 要想$timer_id能正确传递到回调函数内部,$timer_id前面必须加地址符 &
    $timer_id = Timer::add(1, function()use(&$timer_id, &$count)
    {
        echo "Timer run $count\n";
        // 运行10次后销毁当前定时器
        if($count++ >= 10)
        {
            echo "Timer::del($timer_id)\n";
            Timer::del($timer_id);
        }
    });
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

8. Zerstöre den aktuellen Timer im Timer Timer (übergebe $timer_id als Parameter)

require_once './Workerman/Autoloader.php';
use \Workerman\Worker;
use \Workerman\Lib\Timer;

class Mail
{
    public function send($to, $content, $timer_id)
    {
        // 临时给当前对象添加一个count属性,记录定时器运行次数
        $this->count = empty($this->count) ? 1 : $this->count;
        // 运行10次后销毁当前定时器
        echo "send mail {$this->count}...\n";
        if($this->count++ >= 10)
        {
            echo "Timer::del($timer_id)\n";
            Timer::del($timer_id);
        }
    }
}

$task = new Worker();
$task->onWorkerStart = function($task)
{
    $mail = new Mail();
    // 要想$timer_id能正确传递到回调函数内部,$timer_id前面必须加地址符 &
    $timer_id = Timer::add(1, array($mail, 'send'), array('to', 'content', &$timer_id));
};

// 运行worker
Worker::runAll();
Nach dem Login kopieren

9. Setze den Timer nur im angegebenen Prozess

Eine Worker-Instanz hat 4 Prozesse , und stellen Sie es nur auf den Prozess mit der ID-Nummer 0 Timer ein.

use Workerman\Worker;
use Workerman\Lib\Timer;
require_once './Workerman/Autoloader.php';

$worker = new Worker();
$worker->count = 4;
$worker->onWorkerStart = function($worker)
{
    // 只在id编号为0的进程上设置定时器,其它1、2、3号进程不设置定时器
    if($worker->id === 0)
    {
        Timer::add(1, function(){
            echo "4个worker进程,只在0号进程设置定时器\n";
        });
    }
};
// 运行worker
Worker::runAll();
Nach dem Login kopieren

Für mehr Workerman-Wissen beachten Sie bitte die Spalte Workerman-Tutorial.

Das obige ist der detaillierte Inhalt vonVerwendung des Worker-Timers (mit Beispielcode). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Implementieren Sie das Hoch- und Herunterladen von Dateien in Workerman-Dokumenten Nov 08, 2023 pm 06:02 PM

Um das Hochladen und Herunterladen von Dateien in Workerman-Dokumenten zu implementieren, sind spezifische Codebeispiele erforderlich. Einführung: Workerman ist ein leistungsstarkes PHP-Framework für die asynchrone Netzwerkkommunikation, das einfach, effizient und benutzerfreundlich ist. In der tatsächlichen Entwicklung sind das Hochladen und Herunterladen von Dateien häufige Funktionsanforderungen. In diesem Artikel wird erläutert, wie das Workerman-Framework zum Implementieren des Hochladens und Herunterladens von Dateien verwendet wird, und es werden spezifische Codebeispiele aufgeführt. 1. Datei-Upload: Unter Datei-Upload versteht man die Übertragung von Dateien vom lokalen Computer auf den Server. Folgendes wird verwendet

So implementieren Sie die grundlegende Verwendung von Workerman-Dokumenten So implementieren Sie die grundlegende Verwendung von Workerman-Dokumenten Nov 08, 2023 am 11:46 AM

Einführung in die Implementierung der grundlegenden Verwendung von Workerman-Dokumenten: Workerman ist ein leistungsstarkes PHP-Entwicklungsframework, mit dem Entwickler problemlos Netzwerkanwendungen mit hoher Parallelität erstellen können. In diesem Artikel wird die grundlegende Verwendung von Workerman vorgestellt, einschließlich Installation und Konfiguration, Erstellung von Diensten und Überwachungsports, Bearbeitung von Clientanfragen usw. Und geben Sie entsprechende Codebeispiele an. 1. Installieren und konfigurieren Sie Workerman. Geben Sie in der Befehlszeile den folgenden Befehl ein, um Workerman zu installieren: c

Was ist besser, Swoole oder Workerman? Was ist besser, Swoole oder Workerman? Apr 09, 2024 pm 07:00 PM

Swoole und Workerman sind beide leistungsstarke PHP-Server-Frameworks. Swoole ist für seine asynchrone Verarbeitung, hervorragende Leistung und Skalierbarkeit bekannt und eignet sich für Projekte, die eine große Anzahl gleichzeitiger Anfragen und einen hohen Durchsatz verarbeiten müssen. Workerman bietet die Flexibilität sowohl des asynchronen als auch des synchronen Modus mit einer intuitiven API, die sich besser für Benutzerfreundlichkeit und Projekte eignet, die ein geringeres Parallelitätsvolumen bewältigen.

Workerman-Entwicklung: So implementieren Sie Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Workerman-Entwicklung: So implementieren Sie Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Nov 08, 2023 am 08:03 AM

Workerman-Entwicklung: Echtzeit-Videoanrufe basierend auf dem UDP-Protokoll Zusammenfassung: In diesem Artikel wird erläutert, wie Sie mit dem Workerman-Framework eine Echtzeit-Videoanruffunktion basierend auf dem UDP-Protokoll implementieren. Wir werden ein tiefgreifendes Verständnis der Eigenschaften des UDP-Protokolls erlangen und anhand von Codebeispielen zeigen, wie man eine einfache, aber vollständige Echtzeit-Videoanrufanwendung erstellt. Einführung: In der Netzwerkkommunikation sind Echtzeit-Videoanrufe eine sehr wichtige Funktion. Beim herkömmlichen TCP-Protokoll kann es bei der Implementierung von Videoanrufen mit hoher Echtzeitgeschwindigkeit zu Problemen wie Übertragungsverzögerungen kommen. Und UDP

So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem So erstellen Sie mit Workerman ein hochverfügbares Lastausgleichssystem Nov 07, 2023 pm 01:16 PM

Für die Verwendung von Workerman zum Aufbau eines hochverfügbaren Lastausgleichssystems sind spezifische Codebeispiele erforderlich. Im Bereich der modernen Technologie müssen mit der rasanten Entwicklung des Internets immer mehr Websites und Anwendungen eine große Anzahl gleichzeitiger Anforderungen verarbeiten. Um eine hohe Verfügbarkeit und Leistung zu erreichen, ist das Lastausgleichssystem zu einer der wesentlichen Komponenten geworden. In diesem Artikel wird erläutert, wie Sie mit dem PHP-Open-Source-Framework Workerman ein Hochverfügbarkeits-Lastausgleichssystem erstellen und spezifische Codebeispiele bereitstellen. 1. Einführung in WorkermanWorke

So implementieren Sie die Timer-Funktion im Workerman-Dokument So implementieren Sie die Timer-Funktion im Workerman-Dokument Nov 08, 2023 pm 05:06 PM

So implementieren Sie die Timer-Funktion im Workerman-Dokument Workerman ist ein leistungsstarkes PHP-Framework für die asynchrone Netzwerkkommunikation, das eine Fülle von Funktionen bereitstellt, einschließlich der Timer-Funktion. Verwenden Sie Timer, um Code innerhalb bestimmter Zeitintervalle auszuführen. Dies eignet sich sehr gut für Anwendungsszenarien wie geplante Aufgaben und Abfragen. Als nächstes werde ich detailliert vorstellen, wie die Timer-Funktion in Workerman implementiert wird, und spezifische Codebeispiele bereitstellen. Schritt 1: Workerman installieren Zuerst müssen wir Worker installieren

So implementieren Sie die Reverse-Proxy-Funktion im Workerman-Dokument So implementieren Sie die Reverse-Proxy-Funktion im Workerman-Dokument Nov 08, 2023 pm 03:46 PM

Für die Implementierung der Reverse-Proxy-Funktion im Workerman-Dokument sind spezifische Codebeispiele erforderlich. Einführung: Workerman ist ein leistungsstarkes PHP-Framework für die Netzwerkkommunikation mit mehreren Prozessen, das umfangreiche Funktionen und leistungsstarke Leistung bietet und in der Web-Echtzeitkommunikation weit verbreitet ist Service-Szenarien. Unter anderem unterstützt Workerman auch die Reverse-Proxy-Funktion, mit der Lastausgleich und statisches Ressourcen-Caching realisiert werden können, wenn der Server externe Dienste bereitstellt. In diesem Artikel wird erläutert, wie Sie Workerman zum Implementieren der Reverse-Proxy-Funktion verwenden.

So implementieren Sie die TCP/UDP-Kommunikation in der Workerman-Dokumentation So implementieren Sie die TCP/UDP-Kommunikation in der Workerman-Dokumentation Nov 08, 2023 am 09:17 AM

Für die Implementierung der TCP/UDP-Kommunikation im Workerman-Dokument sind spezifische Codebeispiele erforderlich. Workerman ist ein leistungsstarkes asynchrones ereignisgesteuertes PHP-Framework, das häufig zur Implementierung der TCP- und UDP-Kommunikation verwendet wird. In diesem Artikel wird erläutert, wie Sie mit Workerman TCP- und UDP-basierte Kommunikation implementieren, und entsprechende Codebeispiele bereitstellen. 1. Erstellen Sie einen TCP-Server für die TCP-Kommunikation. Es ist sehr einfach, einen TCP-Server mit Workerman zu erstellen. Sie müssen nur den folgenden Code schreiben: <?ph

See all articles