老雷PHP教程之队列任务
一、什么是队列任务
就是按照队列来执行任务,按照先进先出原则执行任务,通过异步执行提升用户体验。
二、实现步骤,以订单为例。
1、发布任务
用户下完单之后,可能需要短信通知商家,或者通知打印机打印订单。
2、获取任务
任务系统获取任务,然后分发给不同任务处理程序去执行。
3、执行任务
具体任务处理程序,接收来自队列任务的委派,然后执行,如果执行出错,判断是重新入队执行还是通知系统出现异常。
三、任务要常驻执行
执行任务的程序不能间断
windows系统cmd执行phptask.php
linux系统phptask.php
?phprequire"file.php";$que=newqueue();$task=$que-rpop();if(empty($task)){echo"任务执行完了";}switch($task["action"]){case"sendSms":$res=sendSms($que,$task);break;default:echo"执行任务";break;}functionsendSms($que,$task){$conf=$task["data"];$res=rand(0,1);if(!isset($task["enum"])){$task["enum"]=1;}if(!$res){echo"执行任务出错,出错".$task["enum"]."次";}else{echo"给".$conf["telephone"]."发送了一条短息".$conf["content"];}if($res==false){if($task["enum"]3){$task["enum"]++;$que-rpush($task);}else{echo"已将错误反馈给站长";}}}
课后作业:
大家去动手操作队列任务
雷日锦