Ghost Ajax request


Ghost Ajax request

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

我代码:

 //I can easly lunch the ajax request
$.ajax({
    type: 'GET',
    url: "myurl.php",
    async: true,
    success: function (data) {}
});   

这个脚本工作得很好,但正如所说的,它需要几分钟才能完成,在这个时候,用户不能打开我的域的任何页面。看起来我的浏览器正在等待响应。

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

-restart my web server

-重启浏览器

-等待直到脚本完成

有一个技巧或东西火"鬼"ajax请求?

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

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

提示吗?

p。我在Firefox 8、Chrome 15.0和IE9上进行了测试

如果你在后台脚本中使用会话,当你完成处理会话变量时,你应该调用session_write_close,因为一个会话不能在任何给定的时间被多个脚本打开。

您可以使用不同的方法,例如使用简单的queue:

  1. 发送请求到服务器做一些工作,将其保存到数据库(与需要做的指示)添加标记为ex完成= 0
  2. 每5分钟在服务器上创建一个cron作业,(lockrun问题)
  3. Cron作业运行并检查数据库中是否有未完成的任务,并逐一运行
  4. 标记为已完成= 1.
  5. 然后,您可以通过标志(和prob userID)查找任务是否完成,并通知用户任务完成。

这样用户可以浏览你的网站没有问题,你甚至可以提供进度给用户完成了多少,如果你需要它,通过在过程中更新数据库。