# 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();
~~~
- 序言
- 启动停止
- 简单的开发示例
- 性能测试
- 性能测试-数据库
- 通讯协议
- Coroutine类
- create
- getCid
- yield
- resume
- sleep
- wait
- getTotalNum
- isExist
- defer
- Runtime类
- Worker类
- 构造函数
- 属性
- workerId
- id
- name
- protocol
- transport
- reusePort
- backlog
- connections
- stdoutFile
- pidFile
- logFile
- user
- reloadable
- daemonize
- globalEvent
- 回调属性
- onWorkerStart
- onWorkerReload
- onConnect
- onMessage
- onClose
- onBufferFull
- onBufferDrain
- onError
- 方法
- rename
- runAll
- stopAll
- listen
- TcpConnection类
- 属性
- id
- protocol
- worker
- maxSendBufferSize
- defaultMaxSendBufferSize
- defaultMaxPackageSize
- 方法
- set
- send
- getRemoteIp
- getRemotePort
- close
- destroy
- pauseRecv
- resumeRecv
- pipe
- Timer定时器类
- add
- del
- 定时器注意事项
- Channel类
- 构造方法
- push
- pop
- length
- isEmpty()