php - laravel queue 关于使用Supervisor
巴扎黑
巴扎黑 2017-04-11 10:18:32
[PHP讨论组]

官网文档中使用Supervisor是开启 numprocs 个进程去监听队列,
问题一:这里监听的队列应该是同一个队列 在这里是 sqs
问题二:因此开 numprocs个监听进程,是否会造成两个任务并发执行的问题?

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
stdout_logfile=/home/forge/app.com/worker.log
巴扎黑
巴扎黑

全部回复(2)
PHP中文网
  • 问题1:是的,都是监听同一个队列。

  • 问题2:不会有并发执行同一个任务的问题,当多个worker同时监听的时候,实际上就是生产-消费的关系,在每个进程从队里中pop任务的时候都由Laravel根据不同的驱动提供不同的原子性支持,保证同一个任务不会被多进程同时消费(database驱动使用了事务,redis则使用Lua脚本获取/更新任务以保证原子性)

黄舟

不同的任务间会并发执行。

不想并发,就要用额外的锁机制。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号