大家好,
我的情况:我有一份工作,可以发送电子邮件和附带的pdf。 pdf是在job handle()中生成的,并随附在电子邮件中。为了使用户体验更加友好,我使用队列作业发送电子邮件。因此,所有其他电子邮件都可以正常工作,除非生成PDF:loadView。此外,PDF在本地主机(WAMP)上运行正常,但是,它引发了上述异常,并位于数据库的fail_jobs表中。
我的工作示例Class :: EmailTestPdf
class EmailTestPdf implements ShouldQueue
{
protected $data;
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function __construct(array $data)
{
$this->data = $data;
}
public function handle()
{
$d=$this->data;
$d['doc'] = PDF::loadView('email.test',compact('data','survey'));
Mail::send('email.testpdf', $d, function ($message) use ($d)
{
$message->from(abc@gmail.com, 'Tester');
$message->subject('Subject Title');
$message->to('me@gmail.com');
$message->attachData($d['doc']->output(), 'test.pdf', ['mime' => 'application/pdf']);
});
}
}
在我使用的控制器方法上:
EmailTestPdf::dispatch($data)->delay(now()->addSeconds(5));
以上在localhost上正常工作。但是,它不能在实时服务器上工作。 另外,在centOS服务器上,我实现了 supervisor ,如下所示:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/coreso5/ptesting/artisan queue:work database --sleep=3 --
tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/home/coreso5/ptesting/storage/logs/worker.log
运行发送pdf的测试后,它将引发我在fail_jobs表中发现的错误
ErrorException:未定义的索引:/ptesting/vendor/dompdf/dompdf/src/Css/Stylesheet.php:175
中的SCRIPT_FILENAME
......
Illuminate \ Foundation \ Bootstrap \ HandleExceptions-> handleError(8,'Undefined index ...','/ ptesting / v ...',175,Array)
答案 0 :(得分:0)
如果您的工作仅发送电子邮件,并且您不想在其他地方使用它,则无需创建专门的工作,laravel可以将您的电子邮件排队。
update purchase
set purchase_date=product.production_date
from product
where purchase.purchase_date<product.production_date;
关于您的错误,似乎在创建pdf时出现问题。您确定它在这项工作之外有效吗?当您这样做时会发生什么;
Mail::to(abc@gmail.com)
->queue(new EmailTestPdf($data));