Php Ghost Ajax请求

Php Ghost Ajax请求,php,ajax,asynchronous,Php,Ajax,Asynchronous,我正在使用PHP+Ajax开发一个网站。 我必须启动一个可能需要很长时间才能处理的ajax请求(大约5分钟),我不需要此请求的任何响应,因此当服务器在后台执行此ajax请求时,用户应该可以自由导航到我的网站 我的代码: //I can easly lunch the ajax request $.ajax({ type: 'GET', url: "myurl.php", async: true, success: function (data) {} });

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

我的代码:

 //I can easly lunch the ajax request

$.ajax({
    type: 'GET',
    url: "myurl.php",
    async: true,
    success: function (data) {}
});   
这个脚本工作得很好,但正如前面所说,它需要几分钟才能完成,而在这个脚本中,用户无法打开我的域的任何页面。我的浏览器似乎在等待响应时被锁定

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

-重新启动我的web服务器

-重新启动浏览器

-等待脚本完成

有没有什么技巧可以激发“幽灵”ajax请求

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

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

有什么建议吗


另外,我用Firefox 8、Chrome 15.0和IE9对其进行了测试。如果您在后台脚本中使用会话,您应该在处理完会话变量后调用,因为会话在任何给定时间都不能由多个脚本打开。

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

  • 向服务器发送执行某些作业的请求,并将其保存到数据库(带有需要执行的操作的说明)添加ex completed=0的标志
  • 每5分钟在服务器上创建一次cron作业(带锁运行的问题)
  • Cron作业运行并检查数据库是否有未完成的任务,并逐个运行
  • 将其标记为已完成=1
  • 然后,您可以通过标志(和prob userID)找到任务是否已完成,并通知用户任务已完成
  • 通过这种方式,用户可以毫无问题地浏览您的站点,您甚至可以通过在过程中更新数据库,向用户提供进度信息—若您需要,完成了多少