2

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

计算某些成就的进度可能需要一些时间。我想出了这个想法,但我不知道如何去实现它,或者它是否可能:

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

我将如何让 AJAX 在responseText到达时逐行读取它,而不是在最后一次全部读取?


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

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

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


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

4

1 回答 1

3

您可以在现代 ES5 浏览器中通过结合使用客户端上的XHR2 进度事件和服务器上的HTTP 块传输编码来实现这一点——这篇 Stack Overflow 帖子更详细地介绍了这一点。

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

于 2013-03-23T15:39:39.180 回答