Yii框架异步请求

我有ajax请求" title="ajax请求">ajax请求执行3个任务:

  • 保存模型(数据库)
  • 发电子邮件
  • 提供成功或失败的消息。

因为此任务需要太多时间。用户可以等待长达20秒的响应(成功或失败的消息)。并且,如果用户关闭浏览器,则它停止在该用户当前处理的操作之一中。

这是糟糕的用户体验。

我希望用户将其数据提交给我的控制器,然后他将收到“成功或失败的消息”。并且该过程将完全在服务器端,并且它应该支持多个会话。

我怎样才能做到这一点?

回答:

@hakre您提供的内容不会减少用户等待响应的时间。

我找到了最好的解决方案:

yii的runactions扩展

这是扩展程序,可让您从控制器后台操作运行。有几种使用方法。对于我来说,最好的方法是

public function actionTimeConsumingProcess()

{

if (ERunActions::runBackground())

{

//do all the stuff that should work in background

mail->send()

}

else

{

//this code will be executed immediately

//echo 'Time-consuming process has been started'

//user->setFlash ...render ... redirect,

}

//User information

echo "Submit Success!"

}

并且它的工作但没有ajax请求,当我发出ajax请求时,由于某种原因它不起作用。所以我用了:

                         ERunActions::httpPOST($this->createAbsoluteUrl('Form/Submit'), array('to'=>'mail@domain.com', 'subject'=>'This is the subject'));

它的工作很棒,但不是理想的解决方案。

以上是 Yii框架异步请求 的全部内容, 来源链接: utcz.com/qa/414535.html

回到顶部