如何设置PHP Websocket服务器?

9
我现在开始接触Web Sockets,一直在成功地使用在线WebSockets Pusher(我不喜欢它)和Scribble(很棒但是由于只有一个人运行,停机时间太频繁)。
我已经在本地主机上按照这个教程 http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/ 去做了,并且它很好用!
我的问题是,我该如何设置上面代码中的server.php,在线网络主机/共享服务器上作为 WebSocket 服务器运行?
或者我需要一个 VPS(如果需要,您推荐哪一个?我以前从未使用过VPS!),并且如何在那里设置WebSocket服务器?
非常感谢您阅读我的问题并回答。我已经阅读了所有关于 sockets 的其他问题/答案,但还没有找到我的问题的答案。希望我能在这里找到它!
1个回答

5

这有点棘手。

您需要执行server.php脚本,并且它需要永远不退出。如果您可以访问共享服务器的SSH,您可以像屏幕截图中一样执行它,并使用类似nohup的东西将其作为后台任务运行:

$ nohup php server.php
nohup: ignoring input and appending output to `nohup.out'

使用SSH连接后,调用此命令,您可以退出,但进程将继续运行。脚本打印的所有内容都将存储在nohup.out中,您可以随时阅读。

如果您没有SSH访问权限,并且实际执行PHP脚本的唯一方法是通过Apache作为页面请求的结果,则可以使用浏览器打开该页面并永远不关闭浏览器。但是,迟早会有一个超时时间,您和Apache之间的连接将关闭,从而有效地停止server.php脚本的执行。

在这些先前的情况下,很多共享主机将不允许脚本无限期运行。您会注意到server.php中有这一行:

set_time_limit(0);

这段文字告诉PHP没有时间限制。如果主机将PHP运行在安全模式下(很多主机都这样做),那么您无法使用set_time_limit,时间限制可能是30秒甚至更短。

所以,是的,VPS可能是您最好的选择。现在,我自己没有一个VPS,也不知道什么价格好坏,但我认为HostGator似乎不错。


请注意,当涉及服务器应用程序时,社区对PHP的兴趣不是很大。如果您打算购买VPS,您应该看看socket.io(Node.js)或Autobahn(Python)。这些都是集成解决方案(服务器和客户端匹配库),已被证明可以很好地工作。当然,您可以从您的极简PHP服务器开始,以了解协议和“低级”方面。 - eepp
我知道的最好的PHP解决方案是Ratchet。对于其他语言,有很多自托管的解决方案(请参见实时Web技术指南)。通常情况下,我建议使用托管解决方案来解决PHP的问题。 - leggetter
感谢提供链接,Leggetter。我会研究一下。但我想问一下,如果我已经编写了自己的服务器端代码(使用 PHP)并在本地主机上执行,那么我是否可以将其托管在 VPS 上,并从客户端连接到它? - Adarsh Sinha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接