我一直在做一些研究,以显示“用户在线”计数器的最佳方式,更新到第二个尝试避免连续的Ajax轮询。PHP共享主机上的WebSockets
显然WebSockets似乎是最好的选择。因为这是一个内联网,所以我会让它成为使用Chrome或Safari的必要条件,所以不应该存在兼容性问题。
我一直在阅读一些关于WebSockets的文章,因为我是新手,我想我非常了解它是如何工作的。
我不是很确定如何用PHP实现它。 Node.js似乎是自然的选择,因为它的“始终运行”性质,但这不是一个选项。
为什么我最困惑的是PHP运行的事实,当它完成时,它结束。如果PHP结束,套接字连接不会丢失?或者,如果PHP重新运行它会回看用户的IP? (我不认为这有可能)
然后我发现这个库 http://code.google.com/p/phpwebsocket/ ,但它似乎是一个小老头(仅提及铬是夜间使用WebSockets兼容)
在一个点上说:“从在命令行中运行server.php程序来侦听套接字连接。“这意味着我需要SSH,许多共享托管计划没有。
我还有一个疑问是该库的源这个其他行:
set_time_limit(0);
这是否意味着PHP文件将连续运行?这是允许共享主机?从我知道的所有主机在1分钟2分钟超时后杀死php。
我有一个与在线用户的MySQL表,我想使用PHP通过websocket向用户登录到这些在线用户的数量。有人可以帮助我,或者在有更好的信息的地方指出我可以实现的目标吗?
感谢
网络套接字非常受欢迎,但如果可以使其发挥作用,服务器发送的事件可能更适合您的目的。 SSE显然可以在JS的旧版浏览器中支持,而websocket不支持,而且你似乎不需要双向通信。我试图通过PHP SSE问题在这里工作:http:// stackoverflow。com/questions/9070995/html5-server-sent-events-prototyping-ambiguous-error-and-repeated-polling – tomfumb 2012-02-21 02:07:12
我没有任何兼容性问题,因为我可以控制使用的浏览器,并且我对WebSockets感兴趣,已经看到它在trello.com上的工作,它的作品像魅力 – Juan 2012-02-21 03:22:01
我建议你不要尝试使用PHP的有状态应用程序,因为PHP首先是为此设计的。正如您所指出的,共享主机可能会阻止打开任意套接字。您最好的选择是获得您自己的VPS服务器http://www.lowendbox.com/ – 2012-02-21 06:25:47