Laravel队列是异步的还是同步的?例如,如果我添加了2个作业,它将如何执行?
1)同步:
job #1 started
job #1 finished
job #2 started
job #2 finished2)或异步:
job #1 started
job # 2 started
job #1 finished
job #2 finished如果它是同步的,我怎样才能使它异步(如2)
发布于 2016-07-10 22:55:24
Laravel的队列系统允许多个worker,这意味着您可以并行运行任务,但每个worker将被同步分配作业。如果只有一个工作进程在运行,则它一次只能处理一个作业。
按您想要的顺序处理队列的最简单方法是使用多个队列名称,例如"high“、"low”、"medium“等,然后告诉您的工作人员按顺序处理它们-例如:
php artisan queue:listen --queue=high,low发布于 2020-01-18 20:22:07
使用supervisor https://laravel.com/docs/5.8/queues#supervisor-configuration
配置示例:
[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发布于 2016-07-10 22:05:41
PHP不是异步语言。当代码启动时,它会逐行运行,直到脚本结束。
如果要模拟异步任务,可以使用shell_exec或exec命令之一启动多个进程。还有一个由krakjoe定制的名为pthreads的php扩展。
https://stackoverflow.com/questions/38292708
复制相似问题