`

关于php cron任务管理的实现假想

阅读更多
之前每开发一个计划任务功能均需要在线上操作crontab来新增项,所以想采用PHP来统一管理单个项目中的任务项, 
可以通过建立表[id,name,status,func,timer,last_time,created_at] 来统一存放项目中的计划任务脚本,通过简单的配置 
能将各计划任务抽象成简单的任务类,然后通过crontab中配置的单个入口对其进行统一访问,从而减少了上线代码对 
线上服务器环境进行修改的麻烦. 
 
然后此处有一些坑,因为任务按功能性质划分可能有好几种,比如: 
 
1. 单次执行,立刻结束,同一时刻可运行多个实例 
2. 守护进程,同一时刻只能运行一个实例 
 
对 第二种 需要 加锁 机制,还要防止程序因为出现爆错,异常等情况没有解锁,导致不能再次启动此种任务 
对于此种任务还需要考虑运行期间如果因其他需求变更,如何快速方便的终止此任务 
 
猜想 通过 任务id  来实现锁机制,每次任务执行时均需要申请锁,每次申请的锁均有固定的使用配额,此种任务 
每批次执行完成后均需消耗一次使用配额,当配额为0时则需要向系统重新申请锁. 
 
lock_id: $task_id 
lock_{$task_id}_quota: $quota  
 
每次重新申请锁,均需再次读取任务配置表中该任务的配置信息 
 
如果申请失败(-1),则关闭此次执行,等待下次执行. 这样当想中止此种任务时可采取2种方案: 
1. 中止本次,只需将其使用配额设为-1 
2. 完全禁止,重置本任务的status为禁用,再重置其使用配额为-1 
 
任务结束之后,要释放锁,如果锁释放失败,需要有一个 无效锁检测机制来强制释放 
 
无效锁的判定: 
关键是 如何确定 任务实例是否是活着的,锁配额 < 1 能否认定是无效锁.会不会出现任务在重新申请锁的过程中 
被 无效锁检测机制给干掉? 
 
干掉之后是否有影响? 
 

-------------- 

以上是我的假想,求拍砖 

 

1
1
分享到:
评论

相关推荐

    c++任务调度,支持cron表达式

    总之,Bosma::Scheduler为C++开发者提供了一种强大的工具,使得在应用程序中实现复杂的时间依赖性逻辑变得更加简单和直观,尤其是结合cron表达式后,可以方便地配置出各种定时任务。在实际项目中,这样的库可以帮助...

    Go-gocron-使用Go语言开发的轻量级定时任务集中调度和管理系统

    Go-gocron是一款基于Go语言实现的轻量级定时任务集中调度和管理系统,设计目标是为了解决在分布式系统中对定时任务的管理和调度问题。它提供了一个简单易用的API,可以方便地在Go应用中集成定时任务,且无需依赖外部...

    win Cron定时任务

    在Windows操作系统中,虽然默认没有内置像Linux系统中名为Cron的定时任务调度器,但可以通过其他方式实现类似的功能。Windows的任务计划程序(Task Scheduler)就是一种常用的替代方案,可以用来创建定期执行的任务...

    thinkphp 5.1 定时任务,Crontab 计划任务-think-cron.zip

    总结,ThinkPHP 5.1的定时任务功能结合Crontab,让开发者能轻松实现后台任务自动化,极大地提升了工作效率。正确配置和使用Crontab,可以确保任务按预期执行,同时保持系统的稳定运行。通过理解和实践上述步骤,你将...

    gocron - 定时任务系统的配置与运行详解

    以下是关于 gocron 定时任务系统的配置与运行详解的知识点: 一、创建 gocron 用户 * 创建 gocron 用户:使用 useradd 命令创建 gocron 用户,并授予 sudo 权限。 * 授权 sudo 权限:使用 visudo 命令编辑 /etc/...

    linux 计划任务cron--怎么定时执行的指令

    ### Linux计划任务Cron详解及应用 #### 一、Cron简介 ...总的来说,Cron作为Linux系统中不可或缺的组成部分,为自动化任务管理提供了强大的支持。掌握Cron的使用,对于提高系统运维效率和自动化程度具有重要意义。

    CRON定时任务生成工具

    CRON定时任务生成工具是一种在IT领域中广泛使用的开发辅助工具,主要功能是帮助开发者创建、管理和调度基于CRON表达式的定时任务。CRON(来自英语Cronos,希腊神话中的时间神)是一种在Unix/Linux系统中广泛采用的...

    k8s+springboot+cronjob 定时任务配置

    总结来说,将 Spring Boot 与 Kubernetes CronJob 结合使用,可以在云环境中实现高效且灵活的定时任务管理。开发者只需要关注业务逻辑,而 Kubernetes 负责管理和调度这些任务,极大地提高了系统的可扩展性和可靠性...

    quartz cron表达式 Bootstrap实现

    在"quartz cron表达式 Bootstrap实现"中,我们主要讨论的是如何将Quartz的定时功能与Bootstrap的UI设计结合起来,创建一个用户友好的任务调度界面。首先,你需要理解Quartz的Cron表达式。Cron表达式由七个子表达式...

    前端开源库-node-cron

    在实际应用中,`node-cron` 可以结合其他前端框架或库一起使用,例如Express.js、React或Vue.js,实现后台定时任务与前端交互的功能。 `node-cron-master` 压缩包文件名暗示了这是`node-cron`的源码仓库。如果你...

    Linux中的Cron任务计划:深入指南

    在Linux系统中,cron是一个基于时间的作业调度器,用于自动执行预定任务...希望本文能够帮助读者在Linux系统中更有效地使用cron,实现任务的自动化管理。随着系统管理需求的不断增长,cron的使用将变得更加广泛和重要。

    Go-分布式定时任务库distributed-cron

    `distributed-cron` 的设计目标是简化这些任务的实现,并确保在分布式环境下的正确性和一致性。 1. **分布式协调**:`distributed-cron` 使用一种分布式协调机制(如 ZooKeeper 或 etcd)来确保在集群中的各个节点...

    windows本地监控任务cron定时任务软件

    在Windows系统中,虽然有内置的任务计划程序(Task Scheduler),但有些用户可能更倾向于使用具有类似Unix/Linux `cron`功能的第三方软件,以获得更加灵活和易于管理的定时任务设置。 "cron"是Unix和Linux系统中的...

    php实现的秒级定时任务工具,基于workerman的库-cron-job.zip

    在PHP中,实现定时任务通常依赖于外部工具如Cron,但这种方案可能不支持秒级别的精度。然而,通过使用像Workerman这样的PHP事件驱动的高性能网络通信框架,我们可以构建一个内部的定时任务系统,从而实现秒级的调度...

    linux任务计划cron文档使用

    ### Linux任务计划Cron文档使用详解 #### 一、Cron简介与基本操作 Cron是Linux系统中用于执行周期性任务的一种守护进程。通过Cron可以方便地安排任务自动在指定时间运行,大大提高了系统的自动化程度。Cron支持多种...

    cron定时任务表达式组件(vue3+ts+naiveUI)

    3.需要传的值,maxHeight="450px"//最大高, @changeCron="changeCron"//方法,:cronValue="cronValue"//cron表达式, :showCronModal="showCronModal"//打开弹框,style="flex: 0.25"//样式 4.// cron子组件传的...

    maximo系统中corn任务设置

    Maximo系统是一款强大的资产管理和工作流程自动化解决方案,广泛应用于企业级环境。...通过以上步骤和注意事项,你可以在Maximo系统中成功设置和管理Cron任务,实现自动化工作流程,提高效率并减少手动干预的需求。

    cron4j定时任务框架-cron4j.zip

    cron4j是一个轻量级的Java库,用于创建和管理定时任务。这个框架以其强大的调度功能和简单易用的API而闻名,使得开发者能够在Java应用中实现复杂的定时任务安排。cron4j的名字来源于Unix系统中的cron服务,它允许...

    linux(centos)中的cron计划任务配置方法.docx

    通过掌握这些基础知识,你就能有效地在Linux(CentOS)系统中配置和管理cron计划任务,实现自动化的工作流程。在实际应用中,可以结合实际需求编写各种复杂的定时任务,提高系统的自动化管理水平。

Global site tag (gtag.js) - Google Analytics