AJAX / PHP异步计算

时间:2013-03-23 15:19:08

标签: php javascript ajax

我目前正在为我的项目计划一个成就系统。当用户实际访问“成就”页面时,成就将被解锁,任何未完成的成就将显示其进度。

计算一些成就的进展可能需要一些时间。我提出了这个想法,但我不知道如何实现它,或者甚至可能:

  • JavaScript通过AJAX
  • 请求成就数据
  • PHP开始计算成就进度
  • 对于每个成就,都会将一行写入ID:progress
  • 形式的输出流
  • JavaScript接收每一行并显示给定成就的进度

我如何让AJAX在到达时逐行读取responseText,而不是在结束时一次读取所有内容?


此外,如果可能的话,我希望PHP能够像这样进行线程化:

  • 每项成就:
    • 如果有超过N个“线程”,请等待一个完成
    • 分叉线程以计算当前成就并回显结果行

在PHP中这样的事情可能吗?


或者我只是以完全错误的方式解决这个问题?我应该为每组成就发送一个AJAX请求吗?或者每个成就一个?你会建议什么作为替代方案?

1 个答案:

答案 0 :(得分:3)

您可以在现代ES5浏览器中使用客户端上的XHR2 Progress Events和服务器上的HTTP Chunked Transfer Encoding组合实现此功能 - this Stack Overflow post详细介绍。

就个人而言,我会说这种方法有点过度设计。如果第一次获取玩家成就需要不到几秒钟(假设您将在给定时间段内为后续请求缓存它),那么我只是让玩家在下载时等待,并期待优化这个一旦我有足够的用户保证:)