queue:listen 和 queue:work --daemon 的区别
请问 queue:listen
和 queue:work --daemon
在实际使用中需要如何取舍?
从文档介绍以及阅读代码,可以得出 queue:work --daemon
能够完成 queue:listen
的功能且性能更好,为什么 queue:listen
还有存在的必要?
本帖已被设为精华帖!
高认可度评论:
三种情况:
queue:work
默认只执行一次队列请求, 当请求执行完成后就终止;queue:listen
监听队列请求, 只要运行着, 就能一直接受请求, 除非手动终止;queue:work --daemon
同listen
一样, 只要运行着, 就能一直接受请求, 不一样的地方是在这个运行模式下, 当新的请求到来的时候,不重新加载整个框架
, 而是直接 fire 动作.能看出来,
queue:work --daemon
是最高级的, 一般推荐使用这个来处理队列监听.至于存在的必要
--daemon
是在 Laravel 4.2 以后才加入的.queue:listen
和queue:work --daemon
还是有区别的.三种情况:
queue:work
默认只执行一次队列请求, 当请求执行完成后就终止;queue:listen
监听队列请求, 只要运行着, 就能一直接受请求, 除非手动终止;queue:work --daemon
同listen
一样, 只要运行着, 就能一直接受请求, 不一样的地方是在这个运行模式下, 当新的请求到来的时候,不重新加载整个框架
, 而是直接 fire 动作.能看出来,
queue:work --daemon
是最高级的, 一般推荐使用这个来处理队列监听.至于存在的必要
--daemon
是在 Laravel 4.2 以后才加入的.queue:listen
和queue:work --daemon
还是有区别的.@Summer 我用的 Laravel 5.3,似乎 queue:work 就会一直执行下去,只要有新的队列就执行
@纸牌屋弗兰克 是的啊。5.3貌似work和listen差不多都是一直执行所有任务?目前还不清楚有什么区别。
@纸牌屋弗兰克 --daemon Run the worker in daemon mode (Deprecated)
listen 并发怎么支持,我在测试的时候发现,listen启动多个进程时,会对同一个任务执行多次,
有人遇到过吗,怎么解决的
work 命令的适用场景是:
任务数量较多,
性能要求较高,
任务的执行时间较短,
消费者类中不存在死循环,sleep() ,exit() ,die() 等容易导致bug的逻辑
listen命令的适用场景是:
任务数量较少,
任务的执行时间较长(如生 成大型的excel报表等),
任务的执行时间需要有严格限制