为了账号安全,请及时绑定邮箱和手机立即绑定

关于laravel 队列的一些使用问题

关于laravel 队列的一些使用问题

侃侃尔雅 2018-07-18 13:51:24
由于业务需要,我在一个方法中需要执行几个不同的推送通知,经过思考我想通过队列来执行,现在有一些问题需要各位大佬指点:文档的写法: php artisan queue:work database在运行队列的时候,work可以理解为线程嘛?可以开启多个连接嘛?我是说按下面这样写,如果不是那能否使用两个连接呢?如何配置? php artisan queue:work  database,databse1队列之间是并行执行的嘛?laravel的异步队列,是不是可以理解为单独开了一个线程,将所有队列都放在这个线程里执行,而不是为每个线程单独创建一个线程?如果我想每个队列单独使用一个线程,是不是只能使用swoole服务?
查看完整描述

2 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

  • 第一个问题,work可以理解位线程吗?不可以,这里的php artisan queue:work只是一个进程,队列中的任务是按顺序执行的,同一时间在一个进程中只有一个任务在处理,只有这个处理完了才会接受下一个任务来处理。

    因此,为了提高执行效率,一般都会启动多个这样的work进程来处理,比如使用supervisor对进程进行管理。

    不能在一个php artisan queue:work指定两个connection来处理,一般来说,如果存在多个不同的connection,那么启动多个php artisan queu:work database这样的进程来分别监听不同的connection就可以了。

  • 第二个问题,队列之间是并行执行的吗?对于单个php artisan queue:work来说,里面的任务都是串行执行的,使用--queue参数可以指定其监听不同的队列,因此需要对于每个队列,创建一个php artisan queue:work --queue queueName的进程分别进行处理,这样队列之间就可以并行处理了

  • 第三个问题,Laravel中的异步队列,不能理解为线程,它们都是进程,推荐使用supervisor对多Laravel队列进程进行管理。


查看完整回答
反对 回复 2018-07-18
  • 2 回答
  • 0 关注
  • 507 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信