php 任务调度

在日常开发中,我们总会遇到一些在某个指定的时刻去执行,或是每隔xx时间执行,或是需要一直在后台监听的任务执行。基于这个需求,对于php我找了一些办法来实现这些功能

1、依赖于laravel的任务调度。
每隔xx时间执行一次命令,或是执行一段函数,或是访问一段远程

2、依赖宝塔的定时任务
php 任务调度_第1张图片
在宝塔后台创建定时任务,在指定的间隔时间或是目标时间,去执行一段命令(可以是访问每个url地址,可以是指定某个php文件任务)

3、依赖宝塔 进程守护管理器
php 任务调度_第2张图片
基于Supervisor开发的进程守护工具,一直监听运行进程的状态,当运行进程因不可知原因或是其他原因退出后,会立刻再次执行,可以指定运行用户的身份等信息。

场景举例
1、资金结算场景
常见如支付宝提现至银行卡,微信提现至银行卡。都会提示2小时内到账,其实就是在后台创建一个任务,然后由队列任务去执行。这种适合开守护进程去运行

2、某个统计算法比较复杂,运行一次比较耗时,用于财务记账或是后台管理人员统计
适合定时任务执行或是任务调度。后台进程在指定时间间隔内执行一次后将获取出来的结果存储至数据库或是redis。前端访问直接走缓存或数据库中获取避免走生成算法导致大量耗时。这种需要规定好执行间隔耗时,每隔xx时间执行一次。

3、不需要立即给用户反馈,单需要处理的场景

a、用户注册成功后需要推送给用户一份邮箱welcome
b、后台管理人员给对某一部分用户批量推送消息
基于以上两种情况,适合创建队列任务去执行,每个工作拆分成一个一个的工作对象,工作对象含有run执行动作。再设计一个工作调度器,工作调度器的内容:1、添加待执行工作对象(将工作对象加入队列)2、开始执行工作对象(队列执行,当任务较多时,可以对开执行队列进程执行)

你可能感兴趣的:(技术开发文档,php,php,开发语言)