mysql的每隔1分钟定时_微擎模块开发技巧:PHP定时任务执行思路+实战

569eab752b7ef59b32d480f002a1d9b2.gif

朋友们,好久不见!

最近在用全新的技术栈研发全新的产品(下次详聊),顺便更新了我们微擎市场的几个模块。

在开发中遇到一个有趣且实用的思路 —— 微擎模块定时执行任务,我在这里把原理和实战分享给大家一起学习研究!

功能介绍 定时执行任务,比如我们添加一个推送任务,要求在某个时间点执行,这个时间点可能是几分钟后,也可能是几小时或者几天后。 由于 PHP 的天生缺陷,无法保持脚本一直在执行(比如会被超时结束、回收内存结束等),所以我们很难在PHP上实现延时 N 秒后执行下一步代码。 解决思路 我们发现了一个解决这个 PHP 缺陷的好办法(已流行使用于多个大型微擎模块): 用 HTTP 方式定时请求某个PHP接口,接口判断任务,如果有则获取后执行。 比如,我们创建一个时间在 2020/09/09 11:11:00 执行的任务,那么存储相应的数据和执行时间到数据库后,通过定时请求PHP URL接口,定时判断是否有任务执行时间小于当前时间并且没执行的任务,如果有,则执行。 如果你还是有点迷糊,请继续往下看下方这个例子 ^_^。 实战案例 vPush小程序订阅消息群发(微擎版)在最新的版本中,新增了定时任务执行功能。 首先我们通过后台的配置说明,获取到定时任务接口,然后在宝塔面板中添加定时请求计划任务:

6a1ff47747a88fbbd1873b9a1bee853d.png

这样,宝塔的计划任务程序就会每隔 1 分钟去请求我们的接口,我们的程序也就自然可以每隔 1 分钟检测是否有新的执行任务了。

然后,我们测试一下,添加推送任务的时候,把时间往后延迟一点试试:

8c1e4c0cba48d18cffdbd26688e38155.png

这样任务就进入待执行列表啦:

ddaf102cd4592e96befca84f33131494.png

最后,通过上方配置的定时请求功能,程序会自动检测任务的时间,如果时间到了,则自动执行对应的任务,也就达到我们的最终目的:定时推送群发消息啦!

这个原理和技巧很好理解很简便,可以应用在很多场景中,如果您的产品有定时执行的需求,而使用的编程语言又很难做到维持延迟执行,那么不妨试试这个方法,让产品更强大起来!

文中实战项目名称:小程序必备的订阅消息群发推送神器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值