如何以高效的方式定期更新PHP/HHVM作为后端的单页应用程序?


How can I periodically update single page applications with PHP/HHVM as backend in an efficient way?

我正在用AngularJS创建一个单页应用程序,我开始真正喜欢这种创建web应用程序的方式。我使用PHP作为后端语言,并将服务设置为REST"ish"API。

现在我面临更新东西的问题。由于页面实际上从来没有刷新过,所以我必须进行某种轮询,或者长轮询检查服务器是否有任何更改,然后通过通知让用户知道更改。

据我所知,(我可能错了),如果我每10 - 30秒检查一次,如果有变化,这不是很有效。我必须检查用户是否使用JSON Web令牌登录,检查数据库,JSON编码等,这对服务器来说非常困难。据我所知,PHP在websockets方面不是很好。我该怎么办?

我需要检查用户是否收到了任何新消息,或帖子上的新评论,或其他通知。我的项目已经完全停止了,因为我最近一直在寻找"Go"作为PHP的替代品,因为这个原因,我已经失去了我曾经的动力。

编辑:我想过的几件事是,如果用户在30秒内移动鼠标,只运行民意调查,这样我就不需要做更新,当用户甚至不使用网站,但网站只是在一个未使用的选项卡中打开。如果有1000人打开了一个标签,但没有使用这个网站,那么在我看来,这是浪费了很多资源。你们怎么看?

如果你担心数据库超负荷工作,你可以比较计数:例如,你的Angular应用知道X个注释/通知,你轮询服务器来检查服务器是否有> X个注释/通知(一个简单而有效的SQL计数),如果有,通知用户并发出一个完整的评论/通知请求,以及相关的对象,等等。

Websockets和类似的东西对于这种类型的东西来说是多余的,除非你只是好奇地尝试它们。