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

Javascript 如何以高效的方式定期更新以PHP/HHVM为后端的单页应用程序?,javascript,php,ajax,Javascript,Php,Ajax,我正在用AngularJS创建一个单页应用程序,我开始真正喜欢这种创建web应用程序的方式。我使用PHP作为后端语言,并将服务设置为REST“ish”API 现在我面临着更新资料的问题。由于页面实际上从未刷新过,因此我必须进行某种轮询,或者长轮询检查服务器是否有任何更改,然后通过通知让用户知道更改 据我所知,(我可能错了),如果有变化,我每10-30秒检查一次,效率不是很高。我必须检查用户是否使用JSON Web令牌登录,检查数据库,JSON编码等等,这在服务器上非常困难。据我所知,PHP在we

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

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

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

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


编辑:我考虑过的两件事是,只有当用户在30秒内移动鼠标时,才运行民意调查,这样,当用户甚至没有使用该站点,但该站点只是在未使用的选项卡中打开时,我就不需要进行更新。如果有1000人打开了一个标签,但没有使用该网站,那么我认为这是浪费了大量资源。你们怎么看?

如果您担心数据库工作过度,您可能只需要比较计数:例如,您的Angular应用程序知道X条注释/通知,您轮询服务器以检查服务器是否有>X条注释/通知(一个简单而有效的SQL计数),如果有,通知用户并对注释/通知以及相关对象等提出完整请求


Websockets和类似的东西对于这种类型的东西来说是多余的,除非你只是想尝试一下。

只要你避免使用PHP进行长时间的轮询,并且不经常进行轮询,但是每隔几秒到一分钟,你就可以使用PHP(当然这取决于你拥有的用户数量)。PHP中的长轮询是不好的,因为与优点相比,它使用了大量的资源。我也一直在想这一点,到目前为止,我发现socket.io和pusher.com是混合的。但是我还没有真正使用它们。既然你已经使用angularJS了,那么为什么不在后端使用fullstack和node.js呢?使用PHP的原因是HHVM,而且事实上我比其他服务器端语言更了解PHP,即使NodeJS是JavaScript,也不是我习惯的客户端JavaScript,如果这有道理的话。我发现用PHP服务器端编写代码要容易得多。你看过吗?