【发布时间】:2019-05-12 14:57:16
【问题描述】:
您好,我在 laravel homestead 上的队列似乎有问题。 Work and Listen 一次处理 1 个队列有没有办法让它运行一次并处理作业表中的所有队列?
这是我的代码:
DB::beginTransaction();
try {
$model_data = $this->transformCsvDataToModelData($this->csv_data, $this->data['file_columns'], $this->data['table_columns'], $this->data);
$dynamic_list_model = new DynamicDataList();
$dynamic_list_model->setTable($this->list->table_name);
$dynamic_list_model->insert($model_data);
$this->notify($this->data['user']->id, [
'title' => 'Data list upload successful',
'message' => 'Batch ' . ($this->index + 1) . ' data list upload done.'
], 'success');
DB::commit();
} catch (Exception $exception) {
DB::rollBack();
}
【问题讨论】:
-
为什么是
--queue=data_list_upload?你的意思是,每次你运行php artisan queue:work它处理 1 Queue 然后命令停止所以你必须再次运行它?那么为什么App\Events\DataListUploadJob和App\Events\Notify都是进程呢?通常它应该坚持这个过程并等待新的队列到达来处理它们。也许您可以告诉我们更多关于您的工作流程、用户上传数据列表的时间和方式。 -
Notify 事件正在使用 ShouldBroadcastNow 因为我想在某个操作完成/完成后通知用户我尝试删除 ShouldBroadcastNow 但它仍然没有修复。即使在 queue:listen 中,它也只处理 1 个作业。基本上,工作流程是当用户上传数据时,它会按一定数量对其进行分块,然后按块创建一个队列以将其上传到数据库中,一旦该批次完成,它会通知用户第一批已完成上传。跨度>
-
这是什么版本的 Laravel?
-
我认为最新的5.7。
-
您介意分享一下您是如何分配工作的吗?来自 App\Events\DataListUploadJob 和 App\Events\Notify 的完整代码也会派上用场。
标签: laravel queue jobs homestead