Ghost Ajax请求

时间:2011-12-03 15:02:20

标签: 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) {}
});   

这个脚本工作正常,但据说在完成之前需要几分钟,而在此期间用户无法打开我的域的任何页面。看起来我的浏览器已锁定,等待响应。

在“解锁”我的浏览器的那一刻,我有以下解决方案:

-restart我的网络服务器

- 重新启动浏览器

- 等到脚本完成

是否有一个技巧或某些东西引发“鬼”ajax请求?

(幽灵意味着我不想等待回应)

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

任何提示?

PS。我用Firefox 8,Chrome 15.0和IE9进行了测试

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

  1. 向服务器发送请求以完成某项工作,将其保存到数据库(带有说明需要完成的操作)为ex completed = 0添加标志
  2. 每5分钟在服务器上创建一个cron作业,(使用lockrun概率)
  3. Cron作业运行并检查数据库是否存在未完成的任务并逐个运行
  4. 将其标记为已完成= 1。
  5. 然后,您可以通过flag(和prob userID)查找任务是否已完成,并通知用户该任务已完成。
  6. 通过这种方式,用户可以毫无问题地浏览您的站点,您甚至可以通过在进程中更新db来为用户提供在需要时完成的进度。