我们知道发送邮件或短信可以添加到队列里进行异步任务 而不会因为延迟阻塞当前操作。
如果我们要给一万个用户发一封邮件,我需要把这1万个任务添加到队列里。
但是我如果程序中直接把一万个任务添加到队列,一次性循环或批量操作这样会阻塞当前操作,超时或者其他原因很容易出问题,你懂的。
所以我添加1万个任务到队列的这个操作也应该异步任务操作吧?,但是怎么做比较优雅?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
假设你的业务场景是:给站内所有会员发送通知邮件
那么你的任务队列本身的程序实现逻辑就是等待消息然后“获取所有会员邮箱,然后在一个任务中循环给所有会员发送通知邮件”(实际上应该还有更多的优化空间,比如支持区间的会员ID,规则的会员ID等等)
所以假设你后台有一个按钮是给所有会员发送通知,点击以后实际上只是给这个任务队列一个消息通知让他执行任务,而不是你点了那个按钮要获取所有会员邮箱,然后拆分成N个消息通知任务队列执行
你可以看看 pilishen 的laravel团队任务管理第三套 有讲 邮件发送的
直接把
"添加1万个任务到队列并且发送"
添加到队列
队列消费者读取到这个消息后,插入1万个任务到队列,剩下的1万条任务的执行也是通过队列的
网上找了一个laravel操作给手机发送短信代码,可以参考参考