【发布时间】:2012-04-17 20:26:21
【问题描述】:
我有执行 3 个任务的 ajax 请求:
- 保存模型(DB)
- 发送电子邮件
- 给出成功或失败消息。
因为这个任务太费时间了。用户最多可以等待 20 秒的响应(成功或失败消息)。如果用户关闭浏览器,它会停止用户当前进程的操作之一。
这是糟糕的用户体验。
我希望用户将他的数据提交给我的控制器,之后他将收到“成功或失败消息”。并且该进程将完全在服务器端,它应该支持多会话。
我该怎么做?
【问题讨论】:
-
我在这里有点困惑。它如何在其中一个进程上停止?因为一旦发送了用户请求,第一两个步骤将在服务器上完成。第三步将在客户端,它只是一个通知。基本上所有 3 个步骤都将运行。唯一的区别是,如果用户关闭浏览器,他可能看不到通知。还是我看错了?
-
基本上,您需要更改顺序,以便用户无论发生什么都能收到消息。因为任务的其余部分将处理并且从其他任务中获得响应需要比用户需要更长的时间。用户不关心邮件发送成功与否,甚至保存到数据库。
-
我发现这个函数有问题。它甚至发送客户端关闭客户端,但如果客户端没有关闭浏览器,它仍在处理中,即使在处理之前得到答案,它也需要时间直到用户得到答案
标签: php ajax asynchronous yii