int \Workerman\Timer::add(float $time_interval, callable $callback [,$args = array(), bool $persistent = true])
Executa uma função ou método de classe em intervalos regulares.
Aviso: Os temporizadores são executados no processo atual, não sendo criados novos processos ou threads para executar os temporizadores no workerman.
Parâmetros
time_interval
Tempo em segundos entre cada execução, suporta números decimais, com precisão até 0.001, ou seja, em nível de milissegundos.
callback
Função de retorno. Atenção: Se o retorno da função for um método de classe, o método deve ser público.
args
Parâmetros da função de retorno, deve ser um array com os valores dos parâmetros.
persistent
Se é persistente, se deseja executar o temporizador apenas uma vez, passe false (tarefas que são executadas apenas uma vez serão automaticamente destruídas após a execução, sem a necessidade de chamar Timer::del()
). O padrão é true, ou seja, continuará executando regularmente.
Valor de retorno
Retorna um inteiro que representa o ID do temporizador, que pode ser destruído chamando Timer::del($timerid)
.
Exemplos
1. Função de temporização anônima (fechamento)
use Workerman\Worker;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$task = new Worker();
// Inicia o trabalho em várias instâncias para executar tarefas com temporização (verifique se o negócio tem um problema de concorrência em várias instâncias)
$task->count = 1;
$task->onWorkerStart = function(Worker $task)
{
// Executar a cada 2.5 segundos
$time_interval = 2.5;
Timer::add($time_interval, function()
{
echo "tarefa executada\n";
});
};
// Executar o worker
Worker::runAll();