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

Führt eine Funktion oder eine Klassenmethode in regelmäßigen Abständen aus.

Beachten Sie: Der Timer wird im aktuellen Prozess ausgeführt. Workerman erstellt keine neuen Prozesse oder Threads, um den Timer auszuführen.

Parameter

time_interval

Wie lange bis zur nächsten Ausführung? Die Einheit ist die Sekunde und es können Dezimalzahlen verwendet werden, um bis auf 0,001 Sekunden, also bis auf Millisekunden, genau zu sein.

callback

Rückruffunktion. Beachten Sie, dass, wenn die Rückruffunktion eine Methode einer Klasse ist, die Methode öffentlich sein muss.

args

Parameter für die Rückruffunktion. Diese müssen als Array übergeben werden.

persistent

Ist der Timer persistent? Wenn die Ausführung nur einmalig erfolgen soll, dann false übergeben (Einmalige Aufgaben werden automatisch nach Abschluss der Ausführung zerstört und es ist nicht notwendig, Timer::del() aufzurufen). Standardmäßig ist es true, was bedeutet, dass die Ausführung dauerhaft erfolgt.

Rückgabewert

Gibt eine Ganzzahl zurück, die die Timer-ID repräsentiert. Mit Timer::del($timerid) kann dieser Timer dann gelöscht werden.

Beispiel

1. Anonyme Funktion als Timer-Funktion

use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';

$task = new Worker();
// So viele Prozesse wie nötig für die Timer-Aufgaben starten. Beachten, ob das Geschäft bei Mehrprozessen ein Nebenläufigkeitsproblem hat.
$task->count = 1;
$task->onWorkerStart = function(Worker $task)
{
    // Führen Sie alle 2,5 Sekunden eine Aufgabe aus.
    $time_interval = 2.5;
    Timer::add($time_interval, function()
    {
        echo "Aufgabe läuft\n";
    });
};

// Worker ausführen
Worker::runAll();