首页 PHP后端 php利用workerman的定时器实现延时操作的一个思路【原创】
php利用workerman的定时器实现延时操作的一个思路【原创】
作者 : tanyi 来源 : 我的笔记 浏览 : 1130 次 时间 : 2018-11-14 15:59:03
简述
延时操作个人目前接触最多的场景是用户下单后一定时间未支付自动取消订单,传统的做法是采用定时任务定时扫描数据库超时订单或者利用客户端的请求每次请求去检测一次是否有超时订单,这些方法我始终感觉不是很好,所以一直想办法在弄一个比较理想的方法,至少比上面这两个方法好一点的处理方式

今天没事就研究了一下这个东西,主要是利用workerman的定时器。所以首先得下载workerman然后引入到自己的项目,或者composer安装也可以,具体就不再多说了。先贴出代码

use Workerman\Worker;
use \Workerman\Lib\Timer;
require_once './Workerman/Autoloader.php';

//创建一个Worker监听2345端口,使用http协议通讯
$http_worker = new Worker(" 

//启动4个进程对外提供服务
$http_worker->count = 4;

//检查订单是否超时
function check_order($order){
    //这个方法用于检查该订单是否超时。。。。具体逻辑根据实际应用场景写,这里只记录是否进入这个方法
    file_put_contents('./log.txt','订单编号:'.$order.' 处理时间:'.date('Y-m-d H:i:s')."\n",FILE_APPEND);
}

$http_worker->onMessage = function($connection, $data)
{
    $msg='';
    if(isset($data['get']['order'])){
        $msg=json_encode($data['get']);
        //10秒后执行检查订单方法,最后一个参数传递false,表示只运行一次
        //这里记录请求时间用于对比延时操作的效果
        file_put_contents('./log.txt','订单编号:'.$data['get']['order'].' 请求时间:'.date('Y-m-d H:i:s')."\n",FILE_APPEND);
        Timer::add(10, 'check_order', array($data['get']['order']), false);
    }
    $connection->send('请求成功:'.$msg);
};

//运行worker
Worker::runAll();


新建一个php文件,假设命名为index.php,将上面代码复制到该文件,注意里面require_once的路径根据自己目录做调整,然后打开cmd窗口,进入到index.php所在目录,执行命令:php index.php,正常应该会看到的结果应该是这样

image.png

如果报错需要去看看workerman的文档,这时不要关闭该cmd窗口。这时我们浏览器去访问:http://127.0.0.1:2345/?order=No1

http://127.0.0.1:2345/?order=No2,然后查看log.txt的记录

image.png

最终结果不错,达到了我预期的效果。

上一篇: 利用nginx实现负载均衡【转载】

下一篇: php __call() 与call_user_func_array()方法结合的使用【原创】
版权声明:原创文章,转载时请注明原始出处,作者等相关信息。
本文连接:https://ntbk8.cn/index/d-56.html
留言
上传图片
评论列表

110 篇

文章总数

66178 次

浏览总数

96 条

评论总数

昵称 Telkobe
职业 PHP开发
家乡 四川南充
住址 暂居成都
QQ 946188985
文章搜索
热门文章
最新文章
新闻头条

1 最深水位及腰,三亚一村庄内涝 被困群众被成功转移

2 最具影响力!海淀融媒又双叒叕上榜啦!

3 厨房煤气泄漏,用打火机测试?这个口诀要记牢

4 济南诚基中心四期迎来改造,曾经无奈的居民“看到希望”

5 杨笠工作室声明:杨笠只是受邀参加某时尚媒体活动,与奔驰无任何商业合作

6 本想在网络找个兼职,结果被骗近八万

7 语文最需要共情,他把课讲到学生心坎上

8 80后女教师扎根乡村10年 逛街看电影成了“奢侈品”

9 上天入地、飞檐走壁……消防“蜘蛛侠”大片来袭!

10 奥运冠军乐靖宜、罗雪娟、焦刘洋沪上同框,她们要复出了?

11 这座县域隶属扬州,处于江苏中部地理位置优越,为何说发展不好?

12 瓦后Wahou属于什么档次?是奢侈品吗?

13 新洲最美教师24年如一日扎根乡村教育,走教一年多来奔波数百公里

14 网红直播喝农药身亡,这些“帮凶”该当何罪?

15 最新!牵动全网人心的这位杭州刑警又有好消息

16 德州一拉面馆搬迁,老板贷款退会员储值金!本人回应:已退15万元,退款还在继续

17 四旬男子不满父亲喊他吃饭,竟持刀将其砍伤,涉故意杀人罪被起诉

18 挥拍魔都, 2021 澳网中国业余挑战赛上海站精彩收官!

19 “液态——2021上海当代艺术展”展出,看艺术家如何诠释“液态”?

20 秀出未来可期的艺术新面貌,2021上海青年艺术博览会下月启幕

21 上海江南民歌大赛颁奖展演在青浦朱家角古镇举行

22 不颁一分钱的“上海好童书”颁出 张文宏主编《病菌简史》获特别奖

23 粤剧《白蛇传·情》昨晚在宛平剧院开演

24 福州一在建摩天轮垮塌

25 中国书坛新人新作展览在新洲面试考核

26 海南省少儿民歌文化季圆满落幕 小小“红心”唱响椰城

27 突发!福州一在建摩天轮疑似意外倒塌

28 老常“还钱”记

29 【践行重要训词精神】十元打底“炸金花”,11人聚众赌博被罚

30 天天315丨这两批次的被子抽检不合格 抵抗外力能力较差易破裂

历史上的今天

1 在113年前的今天,1908年10月19日 (农历九月廿五),日本政府封禁《民报》。

2 在101年前的今天,1920年10月19日 (农历九月初八),苏联英雄约翰·里德英年早逝。

3 在89年前的今天,1932年10月19日 (农历九月二十),右江根据地创建人之一韦拔群被暗害。

4 在86年前的今天,1935年10月19日 (农历九月廿二),中共中央和红一方面军到达陕北。

5 在85年前的今天,1936年10月19日 (农历九月初五),鲁迅在上海病逝。

6 在84年前的今天,1937年10月19日 (农历九月十六),英国物理学家卢瑟福逝世。

7 在78年前的今天,1943年10月19日 (农历九月廿一),《解放日报》发表《在延安文艺座谈会上的讲话》。

8 1949年10月19日 (农历八月廿八),中央人民政府组成。

9 1950年10月19日 (农历九月初九),抗美援朝,志愿军跨过鸭绿江赴朝鲜前线。

10 1956年10月19日 (农历九月十六),波兰政治家哥穆尔卡复出。

11 1965年10月19日 (农历九月廿五),中国尼泊尔正式直接通邮。

12 1978年10月19日 (农历九月十八),卡尔波夫击败克切诺依蝉联世界象棋冠军。

13 1986年10月19日 (农历九月十六),莫桑比克总统座机坠毁 萨莫拉不幸身亡。

14 1987年10月19日 (农历八月廿七),黑色星期一世界股市狂跌。

15 1989年10月19日 (农历九月二十),苏联最新式的航空母舰下水。

16 1995年10月19日 (农历闰八月廿五),北约秘书长克拉斯辞职。

17 1995年10月19日 (农历闰八月廿五),卢泰愚丑闻震惊韩国。

18 1996年10月19日 (农历九月初八),我国第一艘热气飞艇首飞成功。

19 1998年10月19日 (农历八月廿九),格鲁吉亚军人哗变。

20 1998年10月19日 (农历八月廿九),人类首次徒步穿越世界最大峡谷。

21 1998年10月19日 (农历八月廿九),微软公司迎战美国政府。

22 2001年10月19日 (农历九月初三),著名指挥家李德伦逝世。

23 2001年10月19日 (农历九月初三),江泽民与布什首次会晤。

24 2007年10月19日 (农历九月初九),欧盟通过《里斯本条约》 制宪危机有所化解。

25 2007年10月19日 (农历九月初九),全球气候变化举世关注 “巴厘岛路线图”艰难出台。

26 2007年10月19日 (农历九月初九),东盟签署《东盟宪章》 一体化进程加速推进。

27 2007年10月19日 (农历九月初九),多种因素交互作用 国际油价持续高位震荡。

28 2007年10月19日 (农历九月初九),中东和会在美举行 巴以和平进程艰难重启。

29 2010年10月19日 (农历九月十二),“国际制造创新节”首设“蔡伦奖”。

百度统计 站长统计

©2018-2021 www.ntbk8.cn. All rights reserved.  蜀ICP备18006425号

友情链接:  若岚博客  vipbic  快云vps  聚宝盆  飞之梦工作室  7分钟课堂  提交友链