对 Laravel 5 发送邮件队列感到困惑 (Laravel 5.4)

2023-12-24

我从 Laravel 升级4.1 to 5.4。队列迁移很困难。

首先我注释掉了iron来自路线的路线:

Route::post('queue/receive', function()
{
    return Queue::marshal();
});

然后,我配置了数据库驱动程序并迁移jobs table:

php artisan queue:table
php artisan migrate

我变了Mail::queueMailable 的代码如下:

Mail::to('[email protected] /cdn-cgi/l/email-protection')->send(new ForgotPassword($user->first_name));

我成功同步发送邮件(没有队列)。然后,我切换到队列:

Mail::to('[email protected] /cdn-cgi/l/email-protection')->queue(new ForgotPassword($user->first_name));

最后,我从控制台运行此命令:

php artisan queue:listen

When a Mail::to行被执行,一行被插入到Jobs表但未发送邮件。我怎么解决这个问题?

Note: ForgotPassword is a Mailable类(应该是Job班级?)。


同步与同步的主要区别send()和异步的queue(),就你的ForgotPassword与对象有关的一个问题是,当您将对象排队等待发送时,必须将其序列化才能发送到队列,并在队列工作程序处理它时反序列化。

Since send()工作正常,但发生错误queue(),我们可以看到排队的作业已被触发并正在尝试处理,很可能在序列化/反序列化中出现错误。

Your ForgotPassword类可能正在使用SerializesModels特征,因为这就是 artisan 命令生成新的可邮寄对象的方式。这个特征定义了__sleep() http://php.net/manual/en/language.oop5.magic.php#object.sleep and __wakeup() http://php.net/manual/en/language.oop5.magic.php#object.wakeup方法,它修改序列化和反序列化的工作方式。

当。。。的时候__sleep方法实现后,PHP 只会序列化该方法返回的变量__sleep方法。在这种情况下,提供的实现SerializesModelsTrait 使用 Reflection 来遍历类上定义的属性,以提供一种特殊的方式来序列化 Eloquent 模型和集合。

因此,这意味着您的任何变量ForgotPassword未专门定义为该类的属性的类将不会被序列化,并且在处理排队作业并且该类被反序列化时该类将不可用。这是您的问题最有可能的原因。当您尝试执行作业时,您的未序列化可邮寄实例没有所需的数据,并且失败。

有两种方法可以解决这个问题。首先,如果你的ForgotPassword实际上不需要序列化任何模型,您可以删除SerializedModels特征。这将删除__sleep()定义,然后分配给该类的所有变量(而不仅仅是实际定义的变量)都将被序列化,并且在该类反序列化时也将可用。

第二个选项更合适、更明确,是实际定义您需要的属性ForgotPassword class.

如果您在类上定义了属性,则可以保留SerializesModels你班级的特质。但是,如果您实际上没有序列化模型,我会继续删除它。如果不需要,则无需额外的序列化开销。

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

对 Laravel 5 发送邮件队列感到困惑 (Laravel 5.4) 的相关文章

  • 启用 Chrome Headless 时 Dusk 测试失败

    我有一个 HTML 元素 该元素应该仅在第一页加载时显示 Javascript 设置 cookie 如果设置了 cookie 则不会显示该元素 PHP 检查 cookie 如果 cookie 存在 则不会呈现内容 我正在尝试为此进行 lar
  • 如何对 Laravel Mailable 进行断言

    在测试中 我想使用以下方法对 Mailable 做出一些断言Mail assertSent 像这样 Mail assertSent MyMailable class function mail use user return mail gt
  • Laravel 5 中的注册服务在哪里?

    我在用户表中添加了几个字段 在我读到的所有地方都说我还需要更新中的新字段app Services Registrar php文件 但我找不到Services文件夹在任何地方 这是 Laravel 5 中的新安装 这是我的目录结构的屏幕截图
  • 如何在 MySQL 中存储工作日列表?

    我正在使用编写一个应用程序PHP我需要存储一个独特的工作日列表MySQL 在应用程序中 我有一个数组来存储工作日 如下所示 days Wed Thu Sat 我知道我可以使用SET列 但我不想使用这种类型 因为它与我正在使用的框架 Lara
  • 使用 with 的热切加载模型,但给它起了另一个名字 - Laravel 5.2

    是否可以使用 with 方法来使用预加载 但给它另一个名称 就像是 gt with documents as product documents documents as categories 我有一个可以是产品或类别的文档表 急切加载可以
  • /bootstrap/start.php 中的 Laravel 错误:\Illuminate\Foundation\Application 未找到

    因此 我在开发服务器上安装了 Laravel php5 5 3 标准安装 安装了 mcrypt 并收到以下错误消息 Fatal error Class Illuminate Foundation Application not found
  • 表单请求中的 Laravel 数组验证

    我无法验证 Form Request 类中包含数组元素的字段 规则方法 public function rules return state gt required state 0 gt required state gt required
  • 此集合实例 Laravel 关系中不存在属性 [X]

    我在 Laravel 5 6 中使用了很多 Realtions 当我添加 phonebooks 时 我看到所有关系都工作正常 一切都很好 但是当我尝试在视图中显示它们时 我得到了属性在此集合上不存在的错误 这是关系代码 public fun
  • 在 Laravel 5.4 中选择下拉列表的选定值

    我有一个名为 名称 的下拉列表 用户将在其中选择其中一个 提交后 如果出现一些错误 那么我想选择所选的名称 我在 laravel 5 4 中使用它 控制器 info DB table designation gt where status
  • Laravel 5.4 密码重置

    我有一个 Laravel 5 4 应用程序 我的管理区域中有一个视图 允许我查看所有用户 我想创建一个功能 允许我单击后端的按钮 自动发送默认 Laravel 密码重置功能的过程 在我看来 我有以下几点 table class table
  • Laravel 6:尚未设置外观根

    经过一段时间的努力 我已将我的网站从 Laravel 5 8 迁移到 Laravel 6作曲家更新我在网站上遇到此错误 并且仅使用命令PHP工匠 PHP Fatal error Uncaught RuntimeException A fac
  • Laravel:如何设置多对多关系的连接?

    我有模型 class User extends Model protected connection mysql public function areas return this gt belongsToMany Area class u
  • Laravel MySQL 按计数排序

    我正在使用 Laravel 和 MySQL 并且我有一个表post代表用户可以评论的帖子 现在我想按照每个帖子的评论数量按升序 降序对帖子进行排序 我该如何在 Laravel 中执行此操作 我不想添加字段post表来跟踪每个帖子的评论数量
  • Laravel 5.3 Eloquent 事务和外键限制

    我正在从事一个更大的项目 我们在一个 Postgres 数据库中有多个模式 我们在模式之间创建了外键 这是一个例子 gt 我们有公司模式和用户模式 公司模式有company users表 该表对user users表有外键限制 CREATE
  • laravel cron 使用错误

    Laravel 错误 cron 使用 usr bin php home sitevk artisan 计划 运行 1 gt gt dev null 2 gt 1 应用 控制台 内核 use Illuminate Console Schedu
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • 将策略应用到资源控制器

    我有一个CRUD资源定义通过Route resource User UserController 既然可以生成CRUDGates and Policies 有没有办法应用这样的Gate Policy 以便将相应的Gate Policy应用于
  • 如何在 vue.js 中创建用于创建和编辑功能的简单模式?

    我正在尝试创建一个模型以便能够编辑现有数据 我该怎么做呢 我正在使用一个
  • 使用 Mock 对 Laravel 5 Mail 进行单元测试

    有没有办法在 Laravel 5 中测试 Mail 尝试了我在互联网上看到的唯一合法的模拟示例 但它似乎只适用于 Laravel 4 下面的当前代码 mock Mockery mock Swift Mailer this gt app ma
  • Laravel Homestead 中 npm 安装错误有解决方案吗?

    Windows 10 家园 虚拟盒6 0 8 流浪者2 2 5 节点 v12 5 0 npm v6 10 1 我想做的就是在新安装的 Laravel 应用程序中执行 npm install 命令 但我不断收到错误 经过两天的谷歌搜索并尝试了

随机推荐

  • log4j2 JDBC 管理器无法连接到数据库

    我正在尝试使用 mysql 配置 log4j v2 但它返回此错误 2014 08 01 15 35 24 819 ERROR Unable to write to database jdbcManager description data
  • nHibernate 映射到自定义类型

    我有一个 Oracle 数据库 其中一个字段是日期范围字段 它基本上只是以 YYYY MM DD YYYY MM DD 格式作为 VARCHAR 40 存储在数据库中 我想将它在 nHibernate 中映射到我这样创建的自定义类 publ
  • jQuery - 查找给定类中没有值的任何输入

    我有一个 非常 基本的验证脚本 我基本上想检查 required 类的任何输入 看看是否有值 a 空白或 b 0 如果是 则在我的表单提交上返回 false 这段代码似乎没有返回 false function myValidation if
  • 查询当前CPU的频率

    Windows 8 任务管理器显示 CPU 的当前 不是最大 频率 例如 1 2 GHz 有没有办法通过 Windows API 获得这个频率 最好使用 Delphi 或 Visual C 我会研究 WMI 特别是CurrentClockS
  • 保存 MongoDB 查询的结果

    在 mongo shell 中进行研究时 我经常编写非常复杂的查询 并希望将结果存储在其他集合中 我知道怎么做 forEach db documents find query forEach function d db results in
  • pg_views 查询中的信息不完整[重复]

    这个问题在这里已经有答案了 我的数据库中有一个视图 PostgreSQL 我想看看它的代码 我写了这个查询 select definition from pg views where viewname x 这在大多数情况下都有效 但是在某些
  • 未捕获的 ReferenceError:函数未定义 jQuery

    我试图在单击按钮时调用 jQuery 函数 但我收到错误如下 未捕获的引用错误 update question ajax 未定义 HTML
  • 修改内容配置文件表单以显示矩阵中的复选框

    我需要像这样显示矩阵http eugen gotdns com test zeitplaner png http eugen gotdns com test zeitplaner png以内容简介的形式 我可以用CSS以这种方式排列复选框
  • 通过git hook执行python子进程

    我在 Git 存储库上运行 Gitolite 并且我有用 Python 编写的 post receive 挂钩 我需要在 git 存储库目录中执行 git 命令 有几行代码 proc subprocess Popen git log n1
  • T-sql - 确定值是否为整数

    我想确定一个值是否为整数 例如TryParse在 NET中 很遗憾ISNUMERIC不适合我 因为我只想解析整数而不是每种数字 有没有这样的事情ISINT或者其他的东西 这里有一些代码可以让事情变得清楚 如果MY FIELD不是 int 此
  • C 语言中 OpenMP 静态调度和动态调度的区别

    我有两个类似的代码 First pragma omp parallel for shared g private i schedule dynamic 1 for i g actualNumberOfChromosomes i lt g m
  • 导入错误:无法导入名称“_safe_split”

    当我尝试使用 train test split 函数时出现以下错误 然后我尝试安装scipy 但没有帮助 有谁知道我可能从下面的错误中遗漏了哪些内容 谢谢 ImportError Traceback most recent call las
  • Vite + React Docker

    我正在尝试使用 docker 容器运行我的 vite react 应用程序 代码运行良好 但不幸的是 它没有在 localhost 3000 中打开 Docker文件 FROM node 18 alpine EXPOSE 3000 WORK
  • 在 Ruby 中设置请求标头

    我有其余的客户端 gem 我正在定义这样的请求 url http someurl request data gt data to json response RestClient post url request content type
  • 将 NSString 解析为 JSON

    我读过几个论坛 但似乎无法完成这个简单的任务 我在 Xcode 中有一个视图 它指向 PHP 脚本并将结果存储为下面的 NSString id 16 name 鲍勃 age 37 我在解析这个 NSString 时遇到问题 这就是我获取 N
  • IBM MQ 8 的 JMeter 配置

    我正在尝试使用 JMeter 测试 IBM MQ 8 0 有人有我需要的各种参数的示例 也许是屏幕截图 吗 我找到了几个例子 但非常不一致 更准确地说 我应该填写什么 队列连接工厂 JNDI 名称请求队列 一些示例显示队列名称 有些是 JN
  • 使用 NLTK 和 Python 创建自定义分类语料库

    我遇到了一些与正则表达式有关的问题CategorizedPlaintextCorpusReader在Python中 我想创建一个自定义分类语料库并在其上训练朴素贝叶斯分类器 我的问题如下 我想要两个类别 pos 和 neg 正片文件都在一个
  • 更改 netbeans 中自动突出显示的变量名称的突出显示颜色?

    当我移动类名称时 该类名称显示的所有其他位置都会突出显示 当我将鼠标悬停在变量上时 它会在我使用该变量的不同位置执行相同的操作 我找不到在 Netbeans 中更改该设置的位置 我更改了其他所有内容 但即使当我查看突出显示部分中的每个选项时
  • Xml 架构规范是否定义了具有默认值的可选属性的序列化?

    首先 Xml Schema 规范does指定parsing of an optional attribute with a default value 如果 xml 文档中不存在这样的属性 那么当使用 XSD 进行解析时 它们似乎存在 并且
  • 对 Laravel 5 发送邮件队列感到困惑 (Laravel 5.4)

    我从 Laravel 升级4 1 to 5 4 队列迁移很困难 首先我注释掉了iron来自路线的路线 Route post queue receive function return Queue marshal 然后 我配置了数据库驱动程序