金融行业标准网
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210906186.1 (22)申请日 2022.07.29 (71)申请人 陕西智引科技有限公司 地址 710000 陕西省西安市西咸 新区沣东 新城能源金贸区西咸金融港4-A座20 楼F2004室013号 (72)发明人 冯炫 熊超 兰巍 马文博 郭强  (74)专利代理 机构 济南誉琨知识产权代理事务 所(普通合伙) 37278 专利代理师 王英杰 (51)Int.Cl. G06F 9/48(2006.01) G06F 9/445(2018.01) G06F 16/25(2019.01) (54)发明名称 基于swoole和ThinkPHP在PHP中实现定时任 务的方法 (57)摘要 本发明属于计算机信息技术领域, 尤其涉及 一种基于swoole和ThinkPHP在PHP中实现定时任 务的方法。 相较于现有任务定时的方法, 该定时 任务方法基于Swoole的定时器程序。 使用Swoole 定时器, Swoole定时器是毫秒精度的定时器。 底 层基于epoll_wait和setitimer实现, 数据结构 使用最小堆, 定时器的添加和删除全部为内存操 作, 性能非常高, 可以支持添加大量的定时器, 且 支 持 异 步 多 进 程 处 理 ; 同 时 , 完 全 兼 容 Linuxcrontab语法, 可使用数组规定好精确操纵 时间; 更可以在web界面, 增删改查任务, 达到方 便控制的目的。 权利要求书1页 说明书3页 附图1页 CN 115237569 A 2022.10.25 CN 115237569 A 1.一种基于sw oole和ThinkPHP在PHP中定时任务的方法, 其特 征在于, 包括以下步骤: a、 首先, 通过HT TP接口将定时任务关键数据写入MySQ L数据库, 其中, 定时任务包括任务名称、 任务触发时间以及Thi nkPHP指令; b、 然后将发布到数据库中的定时任务的数据进行缓存; c、 然后对缓存后的定时任务进行注 册; d、 在Swoole的onTask事件中执行注册后定时任务; e、 在Swoole的onFinish事件中对已执行的定时任务更新其数据, 即可实现在PHP中定 时任务; 其中, 所述c步骤中, 对 对缓存后的定时任务注 册的具体方法为: c1、 首先在Swoole的onWorkerStart事件中, 在最后一个Worker进程启动后, 在Worker 进程中通过Swoole的after函数设置一个一次性的定 时器, 其中, 所述定 时器为$server ‑> after((60‑date('s') )*1000),callback; c2、 在c1步骤中设置的一次性定时器的callback中通过Swoole的tick函数设置一个每 分钟执行一次的定时器; c3、 在c2步骤设置的定时器的callback 中, 对缓存的定时任务进行筛选, 挑出下一分钟 将要执行的任务, 对这些定时任务每一个都设置一个一次性定时器; c4、 在c3步骤设置的定时器的callback中, 通过Swoole的task方法将任务投递到Task 进程中。 2.根据权利要求1所述的基于swoole和ThinkPHP在PHP中定时任务的方法, 其特征在 于, 所述a步骤中, 任务触发时间为 一个Cron表达式。 3.根据权利要求2所述的基于swoole和ThinkPHP在PHP中定时任务的方法, 其特征在 于, 所述d步骤中, ThinkPHP指令通过Linux系统函数exec、 system函数执行ThinkPHP指令, 然后通过Sw oole的finish方法将已执 行的任务投递到W orker进程中。权 利 要 求 书 1/1 页 2 CN 115237569 A 2基于swoole和ThinkPHP在PHP中实现定时任务的方 法 技术领域 [0001]本发明属于计算机信息技术领域, 尤其涉及一种基于swoole和ThinkPHP在PHP 中 实现定时任务的方法。 背景技术 [0002]PHP(PHP:Hypertext  Preprocessor)即 “超文本预处理器 ”, 是在服务器端执行的 脚本语言, 尤其适用于Web 开发并可嵌入HTML中。 PHP语法学习 了C语言, 吸纳 Java和Perl多 个语言的特色发展出自己的特色语法, 并根据它们的长项持续改进提升自己, 例如java的 面向对象编程, 该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 PHP 同时支持面向对象和面向过程的开发, 使用上非常灵活。 [0003]经过二十多年的发展, 随着php ‑cli相关组件的快速发展和完善, PHP已经可以应 用在TCP/UDP服务、 高性 能Web、 WebSocket服务、 物联网、 实时通讯、 游戏、 微服务等非Web领 域的系统研发。 [0004]因为PHP是一个脚本语言, 为此, PHP本身是不支持定时任务的, 但是在PHP中也是 可以执行定时任务的, 常见的做法有以下两种: [0005]一、 通过Linux的脚本程序, 也就是crontab实现定时任务。 通过crontab定时读取 PHP脚本, 不过这种方式实现 的定时任务本身跟PHP没有多大关系, 而且还不方便管理定时 任务; [0006]二、 通过P HP的igonre_user_abort 函数的方式实现定时任。 igonre_user_abort函 数设置与客户机断开是否会终止脚本的运行, 通过该函数可以在客户端关闭浏览器后, 继 续运行PHP脚本, 然后在通过在while结构中使用sleep函数让任务每隔一段时间执行一次。 这种方式实现的定时任务的缺 点在于无法管理服 务器的内存, 脚本一 旦开始就不会停止 。 发明内容 [0007]本发明针对上述的PHP实现定时任务所存在的技术问题, 提出一种方法简单、 操作 方便且性能高、 方便 定时的基于sw oole和ThinkPHP在PHP中实现定时任务的方法。 [0008]为了达到上述目的, 本发明采用的技术方案为, 本发明提供一种基于swoole和 ThinkPHP在PHP中定时任务的方法, 包括以下步骤: [0009]a、 首先, 通过HTTP接口将定时任务关键数据写入MySQL数据库, 其中, 定时任务包 括任务名称、 任务触发时间以及Thi nkPHP指令; [0010]b、 然后将发布到数据库中的定时任务的数据进行缓存; [0011]c、 然后对缓存后的定时任务进行注 册; [0012]d、 在Swoole的onTask事件中执行注册后定时任务; [0013]e、 在Swoole的onFinish事件中对已执行的定时任务更新其数据, 即可实现在PHP 中定时任务; [0014]其中, 所述c步骤中, 对 对缓存后的定时任务注 册的具体方法为:说 明 书 1/3 页 3 CN 115237569 A 3

PDF文档 专利 基于swoole和ThinkPHP在PHP中实现定时任务的方法

文档预览
中文文档 6 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共6页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 基于swoole和ThinkPHP在PHP中实现定时任务的方法 第 1 页 专利 基于swoole和ThinkPHP在PHP中实现定时任务的方法 第 2 页 专利 基于swoole和ThinkPHP在PHP中实现定时任务的方法 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-24 01:01:55上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。