WorkMan手册笔记-定时器类

一、定时执行某个函数或者类方法

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

参数

time_interval

多长时间执行一次,单位秒,支持小数,可以精确到0.001,即精确到毫秒级别。

callback

回调函数注意:如果回调函数是类的方法,则方法必须是public属性

args

回调函数的参数,必须为数组,数组元素为参数值

persistent

是否是持久的,如果只想定时执行一次,则传递false(只执行一次的任务在执行完毕后会自动销毁,不必调用Timer::del())。默认是true,即一直定时执行。

返回值

返回一个整数,代表计时器的timerid,可以通过调用Timer::del($timerid)销毁这个计时器。

二、删除定时器

参数

timer_id

定时器的id,即add接口返回的整型

返回值

Boolean

三、注意事项

1、只能在onXXXX回调中添加定时器。全局的定时器推荐在onWorkerStart回调中设置,针对某个连接的定时器推荐在onConnect中设置。

2、添加的定时任务在当前进程执行,如果任务很重(特别是涉及到网络IO的任务),可能会导致该进程阻塞,暂时无法处理其它业务。所以最好将耗时的任务放到单独的进程运行,例如建立一个/多个Worker进程运行

3、当一个任务没有在预期的时间运行完,这时又到了下一个运行周期,则会等待当前任务完成才会运行。也就是说当前进程的任务都是串行执行的,如果是多进程则进程间的任务运行是并行的。

4、需要注意多进程设置了定时任务造成并发问题。

5、可能会有1毫秒左右的误差。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刘望舒

React Native探索(五)使用fetch进行网络请求

前言 React Native可以使用多种方式来进行网络请求,比如fetch、XMLHttpRequest以及基于它们封装的框架,fetch可以说是替代XMLH...

3207
来自专栏文渊之博

如何使用Python读取大文件

背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方...

79812
来自专栏技术沉淀

命令行工具:文件初探

1363
来自专栏Laoqi's Linux运维专列

python3–文件操作

50610
来自专栏余林丰

虚拟机类加载机制(3)——线程上下文类加载器

之所以将线程上下文类加载器(Thread Context ClassLoader)单独拿出来写,确实是因为它涉及的东西比较多,既然带有线程两个字,一定也是非常重...

2157
来自专栏从零开始的linux

安装Elasticsearch5

新特性 支持lucence 6.x:索引性能提升 新增sliced scroll类型:并发遍历 新增profile API:查询优化 新增reindex:对数据...

3364
来自专栏性能与架构

正则表达式分析工具

下面这个正则表达式是什么意思? ((d{3,4})|d{3,4}-)?d{7,8}$ 这是一个很简单的表达式,相信很多同学都不能马上明白,需要认真看一会儿 ...

3746
来自专栏杂烩

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF

原因是升级后的tomcat设置了url参数解析规则,限制非法字符,如  |  ,解决办法是:

3442
来自专栏黑泽君的专栏

c语言基础学习02_helloworld

============================================================================= 涉及...

1801
来自专栏本立2道生

python默认编码设置

在python安装目录下的Lib/site-packages文件夹下新建sitecustomize.py,内容为

2853

扫码关注云+社区

领取腾讯云代金券