我有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'));
它的工作很棒,但不是理想的解决方案。
本文向大家介绍Android最基本的异步网络请求框架,包括了Android最基本的异步网络请求框架的使用技巧和注意事项,需要的朋友参考一下 本篇文章我们来一起写一个最基本的Android异步网络请求框架,借此来了解下Android中网络请求的相关知识。由于个人水平有限,文中难免存在疏忽和谬误,希望大家可以指出,谢谢大家。 1. 同步网络请求 以HTTP的GET请求为例,我们来介绍一下An
在play,jersey,spring不同于具有池线程的典型多线程服务器。https://jersey.java.net/documentation/latest/async.html https://www.playframework.com/documentation/2.3.x/JavaAsync 一个线程正在侦听,并且在新线程中发生繁重的处理,此外,Web中的非阻塞请求不能与Java中的非
EasySwoole支持在定时器、控制器处理中等多处位置使用异步进程。 CoreSwooleAsyncTaskManager是对Swoole Task的封装实现。 AbstractAsyncTask CoreAbstractInterfaceAbstractAsyncTask 定义了异步任务的接口实现,一个异步任务对象都应当基础AbstractAsyncTask。 class Task exten
本文向大家介绍Yii框架弹出框功能示例,包括了Yii框架弹出框功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii框架弹出框功能。分享给大家供大家参考,具体如下: 更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总
Yii 可以轻松使用,而不需要基本和高级模板中包含的功能。换句话说,Yii 已经是一个微框架。不需要由模板提供的目录结构与 Yii 一起工作。 当你不需要像 assets 或视图一样的所有预定义模板代码时,这一点特别方便。 其中一种情况是构建 JSON API。 在下面的部分将展示如何做到这一点。 安装 Yii 为您的项目创建一个目录并将工作目录更改为该路径。示例中使用的命令是基于 Unix 的,
这是我的代码: 但是当我从控制器调用函数时。它显示错误 在上一个异步操作完成之前,在此上下文上启动了第二个操作。使用“await”确保在该上下文上调用另一个方法之前已完成任何异步操作。任何实例成员都不能保证线程安全。 请帮我解决这个问题。