我有一个订单应用程序,其中添加了订单,之后会向订单用户发送电子邮件,如此
if(Yii::$app->request->post()){
//assign model attributes
if($model->save()){
return [
status:true ///notifies the frontend that saved successifully
]
//the below processes are time consuming hence i would like them to queue
$this->sendEmail($model->orderuser);
$this->sendSMS($model->user_no)
}
}
模型保存后,我想发送电子邮件和短信但这些有时需要一段时间因此我想返回声明通知过程完成然后发送邮件和短信
在返回语句之后的上述架构中,其他人没有被执行?
当我在return语句之前添加它们时,该过程需要一些宝贵的秒数,如何在return语句后执行我的计划
答案 0 :(得分:0)
您可以在try
catch
/ $model->save()
块
//assign model attributes
try {
$model->save();
} catch (yii\db\Exception $e) {
throw new \yii\web\HttpException(405, 'Error saving model');
} catch (ErrorException $e) {
throw new \yii\web\HttpException(405, 'Error saving model');
}
$this->sendEmail($model->orderuser);
$this->sendSMS($model->user_no);