在Apache服务器中使用PHP部署WebSockets

9
我已经创建了一个竞标系统,应该实时工作并在有人对项目进行竞标时更新投标者表格。
目前的解决方案无法处理所有请求(我也尝试了长轮询,但没有太大成功)。在客户端,我使用HTML和Javascript(带有AngularJS),并且每1秒向服务器发送AJAX请求以检查更新。(显然是个糟糕的选择)
最近,我尝试使用RatchetPHP,本地一切顺利,但我必须打开终端并启动服务器。
我的问题是是否有任何教程展示如何将Ratchet WebSocket部署到服务器上(因为我正在某个地方托管Web应用程序)。我已经搜索了很长时间,但似乎没有人澄清WebSockets如何在服务器(Apache)上部署。
2个回答

4
他们不是。由于Ratchet是一个PHP框架,它在PHP中运行。当您通过Apache httpd Web服务器提供网页时,您只是使用mod_php通过HTTP发送响应,但Apache httpd不支持Web套接字。因此,如果您正在使用Ratchet PHP,则必须在PHP本身中运行Web套接字服务器。
另外,请注意Ratchet文档已经向您展示了如何在生产环境中部署它。想法是在supervisord中运行服务器,这是在*nix环境下将进程变为守护进程的最简单方法。

在生产中运行Ratchet时,强烈建议从suporvisord启动它。Suporvisor是一个启动其他进程并确保它们保持运行的守护进程。如果由于任何原因您的长时间运行的Ratchet应用程序停止,监督者守护进程将确保立即重新启动。

设置
(来源: socketo.me)

请注意,如果您在Apache/Nginx Web服务器之间进行负载平衡,则需要像HAProxy这样的额外反向代理来连接WebSocket服务器和常规Web服务器。


谢谢您的回复。是的,我已经仔细阅读了这篇文章。我本以为可能有其他更简单的解决方案,但我想我必须深入研究并阅读更多相关资料。我正在使用共享业务主机,我不知道是否允许使用守护进程来保持WebSocket服务器运行。 - Best Bid
不确定这个解决方案为何被认为是困难的,或者它能变得更容易多少。就你的主机限制而言,现在在Dreamhost或任何其他半靠谱的云托管上运行VPS只需要花费大约5美元。我真的怀疑你是否应该坚持使用那些无法为你的软件提供最基本需求的主机。市场上有大约900万亿个选择,所以这是买家市场。 - Sherif
我实际上是想说的数字海洋。不知道为什么我写了 Dreamhost,但无论如何 :/ - Sherif

3

额...哇。这正是我也在寻找的东西。我一直在想为什么我们要通过手动输入"$ php ....chatserver.php"命令来让一个“服务器”运行。你的方法很有趣。 - 夏期劇場

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