【问题标题】:Laravel Job Is not deleted after processLaravel 作业在处理后不会被删除
【发布时间】:2017-06-14 15:17:21
【问题描述】:

这是我的场景:我有一个 Laravel 排队的 jod,这里是处理方法内容:

$invoiceContract = app('AsteBolaffi\Repositories\Backend\Invoice\InvoiceContract');

$error = $invoiceContract->recordInvoice($this->invoiceId);
d($error);
if (!empty($error) && !empty($this->userEmail)) {
    $userEmail = $this->userEmail;
    $invoice = $invoiceContract->findOrThrowException($this->invoiceId);
    $invoice->load('customer');
    d("Going to send mail to " . $userEmail);
    d($error);
    d($invoice->customer->business_name);
    $data["error"] = $error;
    $data["business_name"] = $invoice->customer->business_name;
    $data["document_number"] = $invoice->document_number;
    d($data);
    \Mail::queueOn('mail', "emails.record_invoice", $data, function ($message) use ($userEmail) {
        $message->from('admin@astebolaffi.it', 'AsteBolaffi');
        $message->to($userEmail);
        $message->subject('Errori contabilizzazione fattura');
        d("HERE I AM");
    });
    d("Completed");
}
return;

如果 recordInvoice 方法返回一个值(例如“未找到项目”),则满足 if 子句并且它必须添加一个邮件队列。但是邮件队列不会在 db 上创建,并且即使控制台打印最后一个 d 方法值(“已完成”)也不会删除当前作业。 如果 recordInvoice 没有返回任何错误,则作业被删除。

无意义的事情(至少对我而言)

如果我注释recordInvoice方法并将值设置为错误,例如:

$error = "test";

正常工作,添加邮件队列,删除当前队列。

有什么建议吗?

【问题讨论】:

  • 我会删除 d() 语句,因为这会杀死脚本。如果你想记录进度,请改用Log::info(),它会将你想要的内容发送到 Laravel 日志文件。
  • @aynber 我已经尝试过了,据我所知是杀死脚本的 ddd 命令
  • 您可以使用 ShouldQueue 接口让您的邮件使用队列。
  • @Kyslik 我的班级已经实现了 ShouldQueue,我的所有其他工作都运行良好

标签: php laravel email jobs


【解决方案1】:

我不知道为什么,但是将项目从 php 5.6 移到 7.0 可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2022-08-03
    • 2014-12-08
    • 2016-03-30
    相关资源
    最近更新 更多