Laravel - 按顺序运行作业

2024-02-01

我正在学习 Laravel,正在开发一个运行 Horizo​​n 来了解工作的项目。我被困在一个地方,我需要一次又一次地运行相同的工作几次。

这是我目前正在做的事情

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Models\Subscriptions;
class MailController extends Controller
{


    public function sendEmail() {
        Subscriptions::all()
        ->each(function($subscription) {
            SendMailJob::dispatch($subscription);
        });
    }
}

这工作得很好,除了它在多个工作人员之间运行作业并且不按保证的顺序运行。有没有办法让作业一个接一个地运行?


正如您在问题中提到的,您正在寻找的是工作链。

来自 Laravel 文档 https://laravel.com/docs/5.7/queues#job-chaining

作业链允许您指定应按顺序运行的排队作业列表。如果序列中的一项作业失败,则其余作业将不会运行。要执行排队作业链,您可以在任何可分派作业上使用 withChain 方法:

ProcessPodcast::withChain([
    new OptimizePodcast,
    new ReleasePodcast
])->dispatch();

所以在你上面的例子中

$mailJobs = Subscriptions::all()
    ->map(function($subscription) {
        return new SendMailJob($subscription);
    });

Job::withChain($mailJobs)->dispatch()

应该给出预期的结果!

Update

如果您不想使用初始作业来链接(如上面的文档示例所示),您应该能够创建一个空的Job具有的类use Dispatchable;。那么你可以使用我上面的例子

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel - 按顺序运行作业 的相关文章

  • Laravel 在 Eloquent 范围和查询中使用 select

    我正在尝试清理我编写的一些代码 这是当前的代码 message Message with comments gt join users messages created by users id gt join team user messa
  • 如何在Redis中使用HSCAN命令?

    我想在我的作业中使用 Redis 的 HSCAN 命令 但我不知道它是如何工作的 Redis 的官方页面 http redis io commands hscan http redis io commands hscan 这个命令给了我空白
  • 从 octobercms 中的非 ajax 表单获取输入值

    我正在尝试构建一个简单的搜索功能 下面是我的搜索表格
  • 在 Eloquent 中定义自定义属性

    我的数据库中有 3 个不同的字段 city state country 如何在 Eloquent 中定义另一个属性以从这 3 个字段返回一个字符串 第一种方法 但不起作用 protected address public function
  • 您的要求无法解析为 laravel 的一组可安装软件包

    我使用 5 7v Laravel 和 7 2 1v PHP 和 Composer 最新版本 但是当我想创建新项目时出现这些错误 Your requirements could not be resolved to an installabl
  • 如何按键中的值对 Redis 哈希进行排序

    Redis 有没有一种好方法来获取按值排序的哈希中的键 我查看了文档 但没有找到直接的方法 另外有人可以解释一下redis中的排序是如何实现的 以及什么吗 本文档 http redis io commands SORT using hash
  • 如何将 Laravel-5.6 转换为 .exe

    我正在本地主机中加载项目 我的管理员要求我将 laravel 5 6 与 mysql 一起转换为 exe 我是这方面的新手 不知道 有哪位高手可以指导一下吗 提前致谢 我不确定你的管理员是否应该要求你将 Laravel 项目转换为 exe
  • Laravel 5 使用语句[重复]

    这个问题在这里已经有答案了 第一次使用 Laravel 5 我了解命名空间的使用以及为什么需要使用它们 我不明白的是为什么我需要添加如下所示的 use 语句 在控制器的顶部 use Session use Input use Respons
  • Laravel 5.0,env() 在并发请求期间返回 null

    问题是当我尝试使用获取配置变量时env setting or Config get setting 有时会返回 null 出于测试原因 我创建了一条简单的路线 Route get test function env env SETTING
  • 在网站的一次导航中仅显示一次弹出窗口

    我有一个使用 Laravel 创建的网站 我希望用户第一次访问我的网站时能够看到弹出窗口 我的意思是第一次 用户访问我网站上的任何页面 这是第一次 访问网站上的一些链接页面 现在 这些页面访问不是第一次 在同一选项卡中打开 facebook
  • 如何更新 Laravel 编辑视图中的图像?

    在 Laravel 中 我的编辑视图中有一个名为 个人资料图片 的字段 每当我单击 编辑 按钮时 我都会在编辑视图中从数据库中获取所有值 但没有获得图像 并且如果每当我每次单击 提交 按钮时 我都必须如果没有上传图像 我无法进一步处理我想要
  • Laravel - 保存在存储文件夹中的图像不向用户显示

    我有这段代码可以将图像保存在 storage app uploads 文件夹中 image main Image where property id id gt get file request gt file file destinati
  • Eloquent 模型中的 UUID 主键存储为 uuid 但返回为 0

    我有一个 mysql 表 其中使用 UUID 作为主键 这是创建迁移 Schema create people function Blueprint table table gt uuid id table gt primary id ta
  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • 使用 Laravel 4 验证多个文件上传

    如何在 Laravel 4 中验证上传文件的数组 我已将其设置为允许多个文件 并且已测试这些文件是否存在于 Input file files 数组中 但如何验证每个文件呢 这是我尝试过的 notesData array date gt In
  • 如何从 Laravel 中的表中选择所有列名称?

    我试图从表中获取所有列名Teller 功能 public function getTableColumns tables return DB select DB raw SELECT COLUMN NAME DATA TYPE COLUMN
  • Laravel 从 5.6 升级到 Laravel 6

    我有一个项目https github com javedbaloch4 Laravel Booking https github com javedbaloch4 Laravel Booking发展于Laravel 5 6现在我想将其升级到
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • 如何向 laravel-passport 访问令牌添加自定义声明?

    我刚刚使用了 laravel passport 它与 jwt auth 相同 我想向我的 accessToken 添加一些自定义声明 可以吗 我想通过2fa status gt true在访问令牌和 API 调用时 有了这个访问令牌 我还想

随机推荐

  • XSLT 聚合 XML 标记值并存储新标记

    我是 xslt 的新手 并尝试使用 XSLT 处理以下 XML
  • 奥尔良任务的交错

    有一个问题here https stackoverflow com questions 54456369 orleans single threaded nature not respected by continuewith其中 Orle
  • 如何使用 knit::spin 注释掉行

    使用时spin包装内knitr 如何简单地注释掉一些东西 使它们看不见旋转 roxygen风格线 被视为出现在报告中的行 通常的 R 注释 被视为R注释并出现在代码块中 仅是文本且开头没有特殊字符的行会导致错误 以 开头的行LaTeX评论
  • PHP 类自动加载

    我有一个 简单框架 其主要实例是 app 现在 实现自动加载器的最佳方法是什么 不使用 Composer 我需要的是有一个处理所有自动加载的类 支持各种名称空间 我有一些方法 困境 起初我认为我应该创建一个处理所有事情的 静态 类 但后来我
  • Boost random::discrete_distribution 构建后如何更改权重?

    好的 可以在 boost random discrete distribution 中给出权重 概率 e g 双倍概率 0 5 0 1 0 1 0 1 0 1 0 1 boost random discrete distributiondi
  • 使用 PowerShell 重命名文件以增加文件编号?

    我有一堆名为 attachment 023940 attachment 024039 attachment 024041 attachment 024103 etc 我需要通过将文件号增加给定的数字来重命名文件 以便它们与数据库中的正确 I
  • gperftools CPU profiler 究竟是如何启动的?

    gperftools 文档 http google perftools googlecode com svn trunk doc cpuprofile html说libprofiler应该链接到目标程序 gcc myprogram c lp
  • 无法从具有多个返回的 Select 中的使用情况推断出 C# 类型参数

    我不认为我做了任何太深奥的事情 但我没有看到任何其他与此相关的问题 以下代码 我已将其简化为要点 在 C 4 中生成编译器错误 但是 类型参数是什么应该是显而易见的 有一个最大公分母 类 A 也明确定义在方法 Frob 的返回类型 难道编译
  • NodeJS base64 图像编码/解码不太工作

    我一直在尝试将发布到nodeJS 和express框架 的图像保存到数据库 但遇到了一些麻烦 忽略所有的 Web 处理 我认为我已经将问题范围缩小到了 Node js 中进行 Base64 编码的方式 我相信下面过于简化的示例应该可以工作
  • 如何将 tibble 导出为 .csv

    我使用 rfm 包进行了 rfm 分析 结果在 tibble 中 我似乎不知道如何将其导出到 csv 我尝试了下面的参数 但它导出了一个空白文件 gt dim bmdata4RFM 1 1182580 3 gt str bmdata4RFM
  • C 中的 #line 关键字

    我试图理解一些代码 但遇到了一个我以前从未见过的关键字 我尝试用谷歌搜索它 但也没有找到任何有关它的信息 char valtext line 1 Values l define INITIAL 0 line 2 Values l int r
  • 如何使用注释在 Spring MVC 中创建默认方法?

    我找不到解决办法 这让我发疯 我映射了 Controller 它使用 RequestMapping 响应多种方法 当没有指定更具体的情况时 我想将其中一种方法标记为默认方法 例如 Controller RequestMapping user
  • 使用 Click 库的 Python 3.6 中没有模块错误

    我正在尝试使用该包在 python 中构建 CLIclick 我使用的Python版本是3 6 这是我的应用程序的主要部分 import os import click cmd folder os path join os path dir
  • php if() 中的多个 OR 似乎没有正确响应。测试数组值和所有。我究竟做错了什么?

    我正在运行一个非常简单的 if 语句 在我添加两个额外的 之前它工作得很好 或 运算符 这是我的代码 if planDetails Company name company1 planDetails PlanDetail name pd n
  • Spring JPA自动创建表失败

    我对 Spring JPA Hibernate MySQL 有疑问 我有一个实体 Nom java 和存储库 公共接口 NomRepository 扩展 JpaRepository 它们的创建和注入都很好 问题是 当我尝试通过存储库的保存方
  • 如何以经过身份验证的方式运行应用程序

    我创建了一个小型应用程序 它尝试根据用户的用户名和密码对用户进行身份验证 当在 Active Directory 所在的同一域上运行时 此应用程序可以正常工作 我现在必须扩展该应用程序 使其也可以在安全和权限方面 封闭 的域上运行 换句话说
  • 为什么 PostgreSQL 枚举类型数组允许空值?

    我正在使用 PostgreSQL 数据库 并使用枚举类型的数组作为其中一列 CREATE TYPE my type enum AS ENUM value1 value2 value3 ALTER TABLE my table ADD COL
  • JsonMappingException:无法构造 CommonsMultipartFile 的实例

    我正在使用 Spring MVC 3 0 在我的应用程序中 我发送一些带有多个附件的信息 并且每个文件都有标题 Id 等 因此 我制作了一个 DTO 如下所示 public class MyDTO Long id Integer age M
  • 如何在Bootstrap中选择960px宽而不是1200px的容器

    如何选择容器960pxBootstrap 中宽而不是 1200px Bootstrap 在宽度超过 1200 像素的屏幕上将容器宽度设置为 1170 像素 对于 992px 到 1200px 的屏幕 容器宽度设置为 970px 您可以阅读有
  • Laravel - 按顺序运行作业

    我正在学习 Laravel 正在开发一个运行 Horizo n 来了解工作的项目 我被困在一个地方 我需要一次又一次地运行相同的工作几次 这是我目前正在做的事情