Task-Schedule-PHP php 任务调度框架开源项目

我要开发同款
匿名用户2016年05月30日
102阅读

技术信息

开源地址
https://github.com/wsdfbb2004/task-schedule-php
授权协议
GPL

作品详情

task-schedule-php

task-schedule-php是一个php任务调度框架,开发者可以使用这个框架来设置周期任务/一次性的延时任务后期异步执行。

动机:

异步/不阻塞:用户操作的时候,服务器端除了和用户交互外,还会通知一些用户感知不到的外部系统,调用这些外部系统比较耗时,无法实时响应。因为这些任务不是主流程。可以将这些任务暂时存储起来,并将任务按照优先级(一般是任务预期执行的时间)进行排序,然后后期顺序执行这些任务,不阻塞主流程。

重复/周期:有些任务任务不仅仅只执行一次,会多次重复性地执行。例如:外部系统的状态发生变化,但是外部系统不会主动地回调/推送通知我们(或者是外部系统主动推送的信道不良),我们会周期性地主动轮询外部系统的状态。

延时处理。

典型的应用场景:

乘客发起一次打车请求,服务器端可以先记录下乘客的打车请求,告知用户打车请求已经受理。服务器端后期想办法逐步将乘客的打车请求通知到周围的司机。

支付系统在收到银行的支付成功回调通知后,先保证将支付状态写入数据库的主流程。然后想办法调用比较耗时的外部系统,将支付成功的消息推送到用户端App。

用户在商户收银台生成一笔支付单后,如果没有在某个时间间隔之内收到银行的支付回调,收银台定期去银行轮询支付结果,直到知道用户在银行已经支付或者是超过最大轮询次数为止。

用户在司机结束行程后,如果在30分钟内没有支付,服务端自动发起一次微信代扣请求。

运行环境

 PHP最低版本:5.3.3.

 Redis环境:php需要安装PhpRedis扩展。

 Beastalkd环境:需要beastalkd的php客户端代码Pheastalk,Pheastalk代码已经内置包含在Libs-ThirdParty目录下。

例子

例子程序可以在demo目录下找到。

直接执行php./demo/startRedis.php

或者php./demo/startBeastalkd.php

或者php./demo/startPhp.php即可。

使用在目录Core/Hadlers目录下编写任务处理函数。fuctio helloWorld(){    echo "\\hello world\\";    retur true;}实例化任务调度对象$redisIp = '10.10.9.77';$redisPort = '6379';$redisTimeout = 2;$redisCliet = ew \TaskSchedule\Libs\RedisWithReCoect($redisIp, $redisPort, $redisTimeout);$scheduler = ew \TaskSchedule\Core\TaskScheduler\RedisTaskSchedulerWithTrasactio($redisCliet);$tasks = ew \TaskSchedule\Core\Tasks\RedisTasks($redisCliet);$ruer = ew \TaskSchedule\Core\TaskRuer($taskResult);$timeEvet = ew \TaskSchedule\Core\TimeEvet\TimeEvet($scheduler, $tasks, $ruer);生产者将该任务添加到计划中。$timeSpace = 2;$type = \TaskSchedule\Core\Tasks\TasksIterface::RUN_REPEATED;$fuc = 'helloWorld';//注意,在add任务之前,先初始化下maxTaskId。$timeEvet->add($timeSpace, $type, $fuc, $args = ull);消费者获取到任务并执行。$ruTimeLe = 5; $timeEvet->loop($ruTimeLe);

功能介绍

task-schedule-php task-schedule-php是一个php任务调度框架,开发者可以使用这个框架来设置周期任务/一次性的延时任务后期异步执行。 动机: 异步/不阻塞:用户操...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论