首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Laravel队列中作业将按什么顺序执行?

在Laravel队列中作业将按什么顺序执行?
EN

Stack Overflow用户
提问于 2016-07-10 22:02:08
回答 3查看 2.5K关注 0票数 2

Laravel队列是异步的还是同步的?例如,如果我添加了2个作业,它将如何执行?

1)同步:

代码语言:javascript
运行
复制
job #1 started
job #1 finished
job #2 started
job #2 finished

2)或异步:

代码语言:javascript
运行
复制
job #1 started
job # 2 started
job #1 finished
job #2 finished

如果它是同步的,我怎样才能使它异步(如2)

EN

回答 3

Stack Overflow用户

发布于 2016-07-10 22:55:24

Laravel的队列系统允许多个worker,这意味着您可以并行运行任务,但每个worker将被同步分配作业。如果只有一个工作进程在运行,则它一次只能处理一个作业。

按您想要的顺序处理队列的最简单方法是使用多个队列名称,例如"high“、"low”、"medium“等,然后告诉您的工作人员按顺序处理它们-例如:

代码语言:javascript
运行
复制
php artisan queue:listen --queue=high,low
票数 5
EN

Stack Overflow用户

发布于 2020-01-18 20:22:07

使用supervisor https://laravel.com/docs/5.8/queues#supervisor-configuration

配置示例:

代码语言:javascript
运行
复制
[program:queue-work]
process_name=%(process_num)s
command=/usr/local/bin/php /var/www/artisan queue:work --queue=worker,default --sleep=1 --tries=3
autostart=true
autorestart=true
user=www
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/storage/logs/queue_work.log
票数 0
EN

Stack Overflow用户

发布于 2016-07-10 22:05:41

PHP不是异步语言。当代码启动时,它会逐行运行,直到脚本结束。

如果要模拟异步任务,可以使用shell_execexec命令之一启动多个进程。还有一个由krakjoe定制的名为pthreads的php扩展。

票数 -11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38292708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档