如何解决我如何在 Laravel 上使用 Queue::after ?
我正在使用 Queue 在我的应用程序上发送邮件,而且效果很好:
class SendMail implements ShouldQueue
{
use Dispatchable,InteractsWithQueue,Queueable,SerializesModels;
private $user_mail;
private $person_data;
private $title;
private $company_name;
private $html;
private $email_sender;
private $email_reply;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($user_mail,$person_data,$title,$company_name,$html,$email_sender,$email_reply)
{
$this->user_mail = $user_mail;
$this->person_data = $person_data;
$this->title = $title;
$this->company_name = $company_name;
$this->html = $html;
$this->email_sender = $email_sender;
$this->email_reply = $email_reply;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Mail::to($this->user_mail)
->queue(new DocumentMessage($this->person_data,$this->title,$this->company_name,$this->html,$this->email_sender,$this->email_reply));
}
}
现在我想获取队列发送电子邮件时的日志,并按照文档,将此代码放入我的 AppServiceProvider
中进行测试:
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Carbon::setLocale('pt_BR');
setlocale(LC_ALL,'pt_BR');
Carbon::setUtf8(true);
Paginator::useBootstrapThree();
Blade::withoutDoubleEncoding();
Queue::after(function (JobProcessing $event) {
DB::raw("INSERT INTO activity_log (log_name,description,subject_id,subject_type,causer_id,causer_type,properties)
VALUES ('email_sent',now(),null,1111,'App\Models\User','');");
});
}
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
}
但是在我使用我的队列发送邮件后没有任何反应。修改 AppServideProvider 后我应该重新启动我的队列作业还是做一些事情?
解决方法
根据 documentation,LOAD DATA LOCAL INFILE "/path/ZNRrecords.txt"
INTO TABLE znrTake1
FIELDS TERMINATED BY '\t'
ENCLOSED BY ''
ESCAPED BY '\\'
LINES TERMINATED BY '\r'
STARTING BY ''
(mtgo_id,card_name,mana_cost,cmc,card_type,oracle_text,@vcard_power,@vcard_toughness,rarity)
SET
card_power = NULLIF(@vcard_power,'\N'),card_toughness = NULLIF(@vcard_toughness,'\N');
是要使用的正确事件类。您可能想要更新此内容:
JobProcessed
顺便说一下,我建议采用更简洁的方法来更好地利用框架。 Laravel 已经包含了开箱即用的 Queue::after(function (JobProcessed $event) {
...
});
。所以you can listen to the mail event。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。