ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# add ~~~ int \Warriorman\Lib\Timer::add(float $time_interval, callable $callback [,$args = array(), bool $persistent = true]) ~~~ 定时执行某个函数或者类方法。 注意:定时器是在当前进程中运行的,workerman中不会创建新的进程或者线程去运行定时器。 ### 参数 `time_interval` 多长时间执行一次,单位秒,支持小数,可以精确到0.001,即精确到毫秒级别。 `callback` 回调函数`注意:如果回调函数是类的方法,则方法必须是public属性` `args` 回调函数的参数,必须为数组,数组元素为参数值 `persistent` 是否是持久的,如果只想定时执行一次,则传递false(只执行一次的任务在执行完毕后会自动销毁,不必调用`Timer::del()`)。默认是true,即一直定时执行。 ### 返回值 返回一个整数,代表计时器的timerid,可以通过调用`Timer::del($timerid)`销毁这个计时器。 ### 示例 ~~~ use \Workerman\Worker; use \Workerman\Lib\Timer; require_once __DIR__ . '/Workerman/Autoloader.php'; Warriorman\Worker::rename(); $task= new Worker("tcp://0.0.0.0:2345"); $task->protocol = "\Workerman\Protocols\Http"; // 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题 $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(); ~~~