今天一同学请帮忙,要求实现用户上传文件后,交给服务端调用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
分享到:
相关推荐
从提供的【部分内容】中可以看到,实现长连接的过程通常涉及到设置定时器(如JavaScript的`setInterval`方法),定时向服务器发送AJAX请求。示例代码中的`ajax_request`函数便是这样一个AJAX请求函数。该函数每3秒钟...
在长轮询中,客户端发送一个Ajax请求到服务器,服务器保持这个连接打开,直到有新的消息时才返回,或者在超时后关闭连接,客户端收到响应后立即再次发起新的请求,形成一个持续的循环。 【Ajax技术】 Ajax的核心...
长轮询是Ajax的一种变体,主要用于实现实时通信。在传统的Ajax请求中,客户端发送请求到服务器,服务器处理完请求后立即返回响应。而在长轮询中,客户端发送请求后,服务器并不立即响应,而是保持连接打开状态,直到...
在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的异步更新,提高用户体验。在这个“Ajax Jsp 连接MySQL数据库”的主题中,我们将深入探讨如何在JSP页面上利用Ajax技术与后台MySQL...
Ajax工作原理是提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当...
本示例“PHP+Ajax实现在线聊天长轮询”旨在教你如何创建一个简单的实时聊天系统,使得用户无需刷新页面就能接收到新消息。 **一、Ajax基础** Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个网页的情况...
【标题】:“Ajax实现注册验证+数据库连接池” 在现代Web开发中,用户交互体验的提升至关重要。Ajax(Asynchronous JavaScript and XML)技术允许我们在不刷新整个页面的情况下更新部分网页内容,大大提升了用户...
以上是“ajax注册页面 (数据库实现)”项目中的主要知识点,涵盖了Ajax通信、前端交互、数据验证、后端处理、数据库设计以及安全措施等多个方面。理解并掌握这些知识点,对于开发高效、安全的Web应用至关重要。
本项目“简单Ajax聊天室 实现聊天功能”利用ASP.NET框架和Ajax技术,构建了一个实时、交互性强的在线聊天平台。在这个聊天室中,用户不仅能发送文字消息,还能调整字体样式、颜色,并发送QQ表情,极大地提升了用户...
该框架设计源码以Ajax长连接为核心,实现了J2EE浏览器与服务器之间的全双工通信,采用JavaScript、Java和HTML等多种语言编写,共包含35个文件,其中Java文件16个,JavaScript文件2个,XML文件2个,其他文件类型涵盖...
2. AJAX的核心API,如`XMLHttpRequest`对象的使用,包括打开连接、发送请求、接收响应等步骤。 3. ASP编程,包括如何处理HTTP请求,与数据库交互,以及生成响应数据。 4. 数据格式化,如JSON或XML,以便于客户端解析...
3. **分页加载**:使用AJAX实现分页功能,用户可以无感知地加载更多留言。 **实现步骤** 1. **设计数据库**:根据上述说明设计数据库结构。 2. **编写PHP脚本**:创建处理请求的PHP文件,如`submit_comment.php`...
在IT领域,AJAX(Asynchronous JavaScript and XML)与ASP.NET的结合被广泛用于构建动态、交互性强的Web应用程序,特别是在实现在线聊天功能时。本文将深入探讨如何使用AJAX和ASP.NET技术来创建一个实时的在线聊天室...
在Spring Boot应用中,使用Ajax实现登录功能是一个常见的需求,它可以提供无刷新的用户体验,使得用户界面更加流畅。本文将详细介绍如何在Spring Boot环境中配置和使用Ajax进行登录处理。 首先,我们看到`pom.xml`...
**Ajax 实现的 Web 聊天系统详解** 在当今的网页应用中,实时交互性已经成为了一项基本需求。为了实现这一目标,开发者们经常使用 AJAX(Asynchronous JavaScript and XML)技术来创建无需刷新页面就能更新内容的...
Ajax的核心是通过JavaScript与XMLHttpRequest对象进行异步数据交换,从而实现页面的局部刷新。 将ASP与Ajax结合,可以充分利用两者的优势,提供更加流畅、高效的用户体验。在ASP中处理服务器端逻辑,如访问数据库、...
【标题】:“C#+js+ajax+MYSQL实现我的个人主页”这一项目主要涵盖了Web开发中的核心技术,通过结合C#后端处理、JavaScript前端交互、Ajax异步通信以及MySQL数据库存储,构建一个完整的个人主页系统。 【C#】:C#是...
在JavaScript中,我们可以使用jQuery的$.ajax或$.getJSON方法来实现: ```javascript $.ajax({ url: 'sql.php', type: 'GET', dataType: 'json', success: function(data) { var names = [], values = []; ...
实现WebIM的第一步是建立连接。通常,我们可以使用WebSocket协议,它提供全双工、低延迟的通信方式,适合实时通信。但是,考虑到浏览器兼容性问题,我们可以使用Ajax轮询(Polling)或长轮询(Long Polling)作为...
在网页开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的异步更新,无需刷新整个页面即可与服务器进行数据交互。本教程主要关注如何利用Ajax实现用户名的实时验证,这对于用户注册功能至关...