之前说到PHP的异步执行,主要目的就是提升用户体验,减少用户等待时间,后台异步执行代码,毕竟只是简单的模拟异步,还是很容易出问题的,所以这里改变一下思路,采用队列来实现,原理一样,效果一样,相对于模拟异步,这个更复杂一些,不如模拟异步来的简单粗暴。
队列,常用于解耦任务处理,例如发邮件、处理图片、生成报告等耗时操作,避免程序长时间阻塞运行,相对于模拟异步、使用队列,效率更高,更可靠。
这里还是使用原生的方式去实现队列的效果,先说一下队列实现的流程和逻辑:包括任务创建、存储、处理、处理结果。在程序运行到需要处理图片,发邮件等耗时的功能时候,创建队列任务,队列的任务包括任务类型以及用到的数据,存到数据库中。这里其实也可以使用其他的存储最好的应该是使用Redis,但是我这个系统比较陈旧没有安装过,就还是用数据库。
另外执行一个守护进程,或者定时器任务用来定时运行,运行的内容自然就是处理数据库中的任务,这里就可以记录一下任务的执行状态,如果失败的话也可以监控到,这里就是比异步执行好的地方,可以监控运行状态,记录处理结果,控制执行的逻辑。
1、添加任务
2、处理任务
上一篇: 移动协同签名实现流程——轮询扫码结果
下一篇: 没有了