首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ghost Ajax请求

Ghost Ajax请求
EN

Stack Overflow用户
提问于 2011-12-03 23:02:20
回答 2查看 237关注 0票数 0

我正在使用PHP+Ajax开发一个网站。我必须发射一个ajax请求,可能需要很长时间来处理(约5分钟),我不需要从这个请求的任何响应,所以用户应该可以自由导航到我的网站,而服务器正在后台执行这个ajax请求。

我的代码:

代码语言:javascript
复制
 //I can easly lunch the ajax request

$.ajax({
    type: 'GET',
    url: "myurl.php",
    async: true,
    success: function (data) {}
});   

这个脚本运行良好,但如上所述,它需要几分钟才能完成,而在此期间,用户无法打开我的域的任何页面。看起来我的浏览器在等待响应时被锁定了。

目前,要“解锁”我的浏览器,我有以下解决方案:

-restart我的web服务器

-restart浏览器

-wait,直到脚本完成

有没有什么能触发“幽灵”ajax请求的把戏?

(ghost表示我不想等待响应)

我尝试触发请求,然后调用abort()函数,但它中止了所有请求以及PHP脚本的执行。

有什么建议吗?

PS。我用Firefox8、Chrome15.0和IE9进行了测试

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-03 23:07:07

如果您在后台脚本中使用会话,则应在处理完会话变量后调用session_write_close,因为在任何给定时间,一个会话都不能由多个脚本打开。

票数 2
EN

Stack Overflow用户

发布于 2011-12-03 23:13:38

你可以用不同的方式来做,例如。使用简单队列:

  1. 将请求发送到服务器以执行某些作业,并将其保存到数据库(包含需要执行的操作)为ex添加标志=0
  2. 每隔5分钟在服务器上创建cron作业,(使用锁运行进行探测)
  3. Cron作业运行并检查数据库,如果存在未完成的任务,则逐个运行
  4. 将其标记为已完成=1。然后,您可以通过标志(并探测userID)查找任务是否已完成,并通知用户任务已完成。H210<代码>G211

通过这种方式,用户可以毫无问题地浏览您的站点,您甚至可以通过在过程中更新数据库,向用户提供您需要的进度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8368531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档