php - 第一份工作完成后如何运行工作?

标签 php laravel

我在一份工作中有两份工作。现在我需要在第一个完成后开始执行第二个作业(在作业中)。在我的场景中,工作链是不可能的。请帮我找出解决方案?

我正在使用 SplitFile::dispatch($this->user_id, $counter);

拆分一个大文件

然后遍历这些文件并发送到作业 ProcessCustomerSync::dispatch($file_path, $user_id, $slices, $dispatch_counter, $last_sync_date, $totalSubscribers, $file); 一个接一个.

问题是第二个工作没有等待第一个完成。所以这个工作没有得到所有需要的数据。我需要在第一个完成后执行第二个

 for($counter=1; $counter<=$slices; $counter++){
      // Splitting file to many for better performance
      SplitFile::dispatch($this->user_id, $counter);
 }

$files = Storage::disk('spaces')->allFiles('storage/klick_sync/'.$user_id);

// $files = glob($path);
Log::channel('command')->info('files'.$files);
$dispatch_counter = 1;

foreach($files as $file){
    $file_path = Storage::disk('spaces')->url($file);
    Log::channel('command')->info('path'.$file_path);
    ProcessCustomerSync::dispatch($file_path, $user_id, $slices, $dispatch_counter, $last_sync_date, $totalSubscribers, $file);
           $dispatch_counter++;
}

最佳答案

您可以安装 supervisor 并准备一个脚本来执行两个独立的作业。您可以按优先级对其进行组织。

关于php - 第一份工作完成后如何运行工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61929296/

相关文章:

php - Laravel 路由 - 破折号

javascript - 为什么我的 POST 变量没有在 this.form.submit(); 之后到达?

php - 用 Umlaute 替换德语字符到简单的拉丁字符 php

php - 使用 PHP 和 JavaScript 下载状态

mysql - 如何在 Laravel Eloquent 中使用 MIN 和 MAX sql 查询

javascript - Laravel,将 javascript 导入 Blade 模板的正确方法

PHPMD - 包含整个规则集并配置属性

php - 如何将文本切成两半,但保持 HTML 层次结构不变?

javascript - VueJS react 性在 Blade 部分内不起作用

laravel - 取消之前在 Vue JS 中使用 fetch API 进行的调用