如何解决PHP - 如何在运行另一行代码 10 分钟后运行一行代码
我希望我的应用程序会在发送另一封电子邮件 10 分钟后发送一封电子邮件。
在我的应用程序中
现在我想
public function finishUserSetup($Sub){
if($Sub == 0){
$subscription = SubscriptionPlans::where('identifier','=',"Monthly")->first();
$expiry = date('Y-m-d',strtotime('+' . $subscription->months . ' months'));
$sub_period = "monthly";
} else{
$subscription = SubscriptionPlans::where('identifier',"Annually")->first();
$expiry = date('Y-m-d',strtotime('+' . $subscription->months . ' months'));
$sub_period = "annually";
}
$this->expiry_date = $expiry;
$this->user_type = "SUB";
$this->subscription_period = $sub_period;
$this->update();
$replaceArray = array(
'fullname' => $this->forename . " " . $this->surname,'subscriptionName' => $subscription->name,);
EmailTemplate::findAndSendTemplate("paymentconfirm",$this->email,$this->forename . " " . $this->surname,$replaceArray);
}
在上面的函数中,最后一行代码是向用户发送付款确认电子邮件的代码
EmailTemplate::findAndSendTemplate("paymentconfirm",$replaceArray);
EmailTemplate::findAndSendTemplate("WelcomeTips",$replaceArray);
如何在 10 分钟后运行以上代码行
解决方法
首先在你的 Laravel 项目中设置队列配置。然后创建一个工作
php artisan make:job YourNameJob
将邮件发送过程转入YoutNameJob,最后在finishUserSetup方法中两次派发YoutNameJob,像这样
public function finishUserSetup($Sub){
.
.
.
YoutNameJob::dispatch([arguments])->delay(now());
YoutNameJob::dispatch([arguments])->delay(now()->addMinutes(10));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。