您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman的Timer定时器类的add方法实现闭包计划任务(定时任务)
发布时间:2021-12-05 00:00:29编辑:雪饮阅读()
add
int \Workerman\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)销毁这个计时器。
实例:
<?php
use Workerman\Worker;
use Workerman\lib\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$task = new Worker();
// 开启多少个进程运行定时任务,注意业务是否在多进程有并发问题
$task->count = 1;
$task->onWorkerStart = function(Worker $task)
{
// 每2.5秒执行一次
$time_interval = 2.5;
Timer::add($time_interval, function()
{
echo "task run\n";
});
};
// 运行worker
Worker::runAll();
?>
实例运行:
[root@izj6c2jeancylo0ppo4vz5z workerman]# php test.php start
Workerman[test.php] start in DEBUG mode
------------------------------------- WORKERMAN --------------------------------------
Workerman version:4.0.22 PHP version:7.0.33
-------------------------------------- WORKERS ---------------------------------------
proto user worker listen processes status
tcp root none none 1 [OK]
--------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
task run
task run
^CWorkerman[test.php] stopping ...
Workerman[test.php] has been stopped
关键字词:workerman,定时器,add,闭包,计划任,定时任务
相关文章
- workerman的Http服务-请求-获取header
- workerman的Http服务-请求-获取cookie
- workerman的Http服务-请求-获得原始请求post包体
- workerman的Http服务-请求-获得请求对象
- workerman的Http服务-请求-获得请求参数post
- workerman的Http服务-请求-获得请求参数get
- workerman的AsyncUdpConnection类的send方法
- workerman的AsyncUdpConnection类的__construct构造方
- workerman的AsyncTcpConnection类的transport属性都利
- workerman的AsyncTcpConnection类的reConnect 方法实