PHP共享主机上的WebSockets

时间:2012-02-21 01:52:30

标签: html5 websocket phpwebsocket

我一直在研究显示“用户在线”计数器的最佳方式,该计数器更新到第二次尝试避免连续ajax轮询。

显然,WebSockets似乎是最好的选择。由于这是一个内部网,我将要求使用Chrome或Safari,因此不应存在兼容性问题。

我一直在阅读一些关于WebSockets的文章,因为我刚接触它,我想我非常了解它是如何工作的。

我不太确定如何使用PHP实现它。 Node.js似乎是这种选择的自然选择,因为它“始终在运行”,但这不是一种选择。

为什么我最困惑的是PHP运行的事实以及何时完成,它结束了。如果PHP结束,套接字连接不会丢失吗?或者如果php重新运行,它将通过ip回顾用户? (我不太明白)

然后我找到了这个库 http://code.google.com/p/phpwebsocket/ 但它似乎有点旧(它提到只有Chrome夜间与WebSockets兼容)

有一点说“从命令行运行server.php程序来监听套接字连接。”这意味着我需要SSH,许多共享托管计划都没有。

我的另一个疑问是该库来源中的另一行:

 set_time_limit(0);

这是否意味着php文件会连续运行?这是允许共享主机?据我所知,所有主机在超时1分钟后杀死了php。

我有一个在线用户的mysql表,我想使用PHP通过websocket广播登录用户数量给那些在线用户。有人可以帮助我或指点我更好地了解如何实现这一目标吗?

由于

1 个答案:

答案 0 :(得分:2)

Websockets即使在专用托管上也需要很多东西,放在一边分享托管。

对于您的要求,服务器发送事件(sse)是正确的选择,因为只有服务器才会将数据推送到客户端。

SSE可以简单地调用服务器脚本,非常类似于ajax,但客户端将接收并能够逐个处理数据。当有些数据进入时,将生成Dom事件。

但即使在版本10中,IE也不支持SSE。因此对于IE,你必须使用一些后备技术,如“ifever iframe”。

就托管而言,普通的共享托管(以及那些不太便宜的托管)将允许php脚本长时间运行,只要它们不被视为问题。