`
宁辉522
  • 浏览: 15825 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

ajax长链接的实现

阅读更多



今天一同学请帮忙,要求实现用户上传文件后,交给服务端调用shell处理,处理分好几步,而且处理时间可能长达数分钟,并要将每一部处理反馈给用户,让用户知道当前进行到哪一步。

一种的方法是每隔很短的时间发送一个ajax请求,检测运算到哪一步,通过检测ajax返回来处理。
这样的好处是实现起来简单,但对客户端和服务端压力都比较大。

还有一种方法,就是发送一个ajax请求,一直处于等待状态,直到服务端有数据时再返回,这样可以显著降低请求数目,减少服务端压力。
 
js:

Js代码    
1. var step = 1,  
2.  
3. getProgress = function(){  
4.     $.ajax({  
5.         type:"POST",  
6.         url:'getdata.php',  
7.         dataType:'text',  
8.         data:{step:step},  
9.         timeout:10*60*1000,  //设置10分钟超时  
10.         success:function(data){  
11.             data = (new Function("return "+data))();  
12.             if(data.step == 1){       
13.                 console.log("step 1 complete");  
14.                 step++;  
15.                 getProgress();  
16.  
17.             } else if(data.step == 2){  
18.                 console.log("step 2 complete");  
19.                 step++;  
20.                 getProgress();  
21.             } else if(data.step == 3){  
22.                 console.log("all complete!");  
23.             } else if(data == "error"){ //如果出错,则重试   
24.                 getProgress();  
25.             }  
26.         },  
27.         error:function(){  
28.             alert("运算超时");    
29.         }  
30.     });  
31. }; 

php:

Php代码    
1. if(!emptyempty($_POST['step'])){  
2.     $step = $_POST['step'];  
3.     set_time_limit(0);  //这里是关键,设置链接永不过时  
4.     if($step == 1){           //每一步由不同的shell处理,php会等shell执行完毕再继续执行  
5.         $sh = "./test1.sh";  
6.     } else if($step == 2){  
7.         $sh = "./test2.sh";  
8.     } else if($step == 3){  
9.         $sh = "./test3.sh";  
10.     }  
11.  
12.     $ret = exec($sh,$results,$rc);  
13.     if($rc == 0){  
14.         echo "{step:".$step."}";  
15.     } else {  
16.         echo "error";  
17.     }  
18.  
19. } 

TAG:Ajax ajax AJAX
分享到:
评论

相关推荐

    ajax实现服务器与浏览器长连接的功能

    从提供的【部分内容】中可以看到,实现长连接的过程通常涉及到设置定时器(如JavaScript的`setInterval`方法),定时向服务器发送AJAX请求。示例代码中的`ajax_request`函数便是这样一个AJAX请求函数。该函数每3秒钟...

    web即时聊天(ajax长轮询方式实现)

    在长轮询中,客户端发送一个Ajax请求到服务器,服务器保持这个连接打开,直到有新的消息时才返回,或者在超时后关闭连接,客户端收到响应后立即再次发起新的请求,形成一个持续的循环。 【Ajax技术】 Ajax的核心...

    php-Ajax长轮询

    长轮询是Ajax的一种变体,主要用于实现实时通信。在传统的Ajax请求中,客户端发送请求到服务器,服务器处理完请求后立即返回响应。而在长轮询中,客户端发送请求后,服务器并不立即响应,而是保持连接打开状态,直到...

    Ajax Jsp 连接MySQL数据库

    在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的异步更新,提高用户体验。在这个“Ajax Jsp 连接MySQL数据库”的主题中,我们将深入探讨如何在JSP页面上利用Ajax技术与后台MySQL...

    ajax长连接式的浏览器、服务器的全双工通信框架.rar

    Ajax工作原理是提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当...

    PHP+Ajax实现在线聊天长轮询

    本示例“PHP+Ajax实现在线聊天长轮询”旨在教你如何创建一个简单的实时聊天系统,使得用户无需刷新页面就能接收到新消息。 **一、Ajax基础** Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个网页的情况...

    ajax实现注册验证+数据库连接池

    【标题】:“Ajax实现注册验证+数据库连接池” 在现代Web开发中,用户交互体验的提升至关重要。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下更新部分网页内容,大大提升了用户...

    ajax注册页面 (数据库实现)

    以上是“ajax注册页面 (数据库实现)”项目中的主要知识点,涵盖了Ajax通信、前端交互、数据验证、后端处理、数据库设计以及安全措施等多个方面。理解并掌握这些知识点,对于开发高效、安全的Web应用至关重要。

    简单Ajax聊天室 实现聊天功能

    本项目“简单Ajax聊天室 实现聊天功能”利用ASP.NET框架和Ajax技术,构建了一个实时、交互性强的在线聊天平台。在这个聊天室中,用户不仅能发送文字消息,还能调整字体样式、颜色,并发送QQ表情,极大地提升了用户...

    基于Ajax长连接的J2EE浏览器服务器全双工通信框架设计源码

    该框架设计源码以Ajax长连接为核心,实现了J2EE浏览器与服务器之间的全双工通信,采用JavaScript、Java和HTML等多种语言编写,共包含35个文件,其中Java文件16个,JavaScript文件2个,XML文件2个,其他文件类型涵盖...

    AJAX+ASP实现输入框提示

    2. AJAX的核心API,如`XMLHttpRequest`对象的使用,包括打开连接、发送请求、接收响应等步骤。 3. ASP编程,包括如何处理HTTP请求,与数据库交互,以及生成响应数据。 4. 数据格式化,如JSON或XML,以便于客户端解析...

    Php mysql ajax 实现留言本

    3. **分页加载**:使用AJAX实现分页功能,用户可以无感知地加载更多留言。 **实现步骤** 1. **设计数据库**:根据上述说明设计数据库结构。 2. **编写PHP脚本**:创建处理请求的PHP文件,如`submit_comment.php`...

    AJAX+asp.net 实现的在线聊天

    在IT领域,AJAX(Asynchronous JavaScript and XML)与ASP.NET的结合被广泛用于构建动态、交互性强的Web应用程序,特别是在实现在线聊天功能时。本文将深入探讨如何使用AJAX和ASP.NET技术来创建一个实时的在线聊天室...

    SpringBoot使用Ajax实现登录

    在Spring Boot应用中,使用Ajax实现登录功能是一个常见的需求,它可以提供无刷新的用户体验,使得用户界面更加流畅。本文将详细介绍如何在Spring Boot环境中配置和使用Ajax进行登录处理。 首先,我们看到`pom.xml`...

    Ajax实现的简单的web聊天

    **Ajax 实现的 Web 聊天系统详解** 在当今的网页应用中,实时交互性已经成为了一项基本需求。为了实现这一目标,开发者们经常使用 AJAX(Asynchronous JavaScript and XML)技术来创建无需刷新页面就能更新内容的...

    ASP和Ajax结合,实现无刷新操作数据库

    Ajax的核心是通过JavaScript与XMLHttpRequest对象进行异步数据交换,从而实现页面的局部刷新。 将ASP与Ajax结合,可以充分利用两者的优势,提供更加流畅、高效的用户体验。在ASP中处理服务器端逻辑,如访问数据库、...

    C#+js+ajax+MYSQL实现我的个人主页

    【标题】:“C#+js+ajax+MYSQL实现我的个人主页”这一项目主要涵盖了Web开发中的核心技术,通过结合C#后端处理、JavaScript前端交互、Ajax异步通信以及MySQL数据库存储,构建一个完整的个人主页系统。 【C#】:C#是...

    [Echarts可视化] 二.php和ajax连接数据库实现动态数据可视化1

    在JavaScript中,我们可以使用jQuery的$.ajax或$.getJSON方法来实现: ```javascript $.ajax({ url: 'sql.php', type: 'GET', dataType: 'json', success: function(data) { var names = [], values = []; ...

    实现webim得用ajax

    实现WebIM的第一步是建立连接。通常,我们可以使用WebSocket协议,它提供全双工、低延迟的通信方式,适合实时通信。但是,考虑到浏览器兼容性问题,我们可以使用Ajax轮询(Polling)或长轮询(Long Polling)作为...

    ajax实现用户名验证

    在网页开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的异步更新,无需刷新整个页面即可与服务器进行数据交互。本教程主要关注如何利用Ajax实现用户名的实时验证,这对于用户注册功能至关...

Global site tag (gtag.js) - Google Analytics