【发布时间】: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,我的所有其他工作都运行良好