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

时间:2015-11-08 23:29:25

标签: php angularjs apache websocket ratchet

我创建了一个投标系统,该投标系统应该可以正常工作,并在有人对某个项目进行投标时更新投标人表格。

当前的解决方案还不足以处理所有请求(我也尝试过长时间轮询,但没有太大成功)。在客户端,我使用HTML和Javascript(使用AngularJS),我每隔1秒向服务器发送一次AJAX请求以检查更新。 (显然是一个糟糕的选择)

最近,我尝试了RatchetPHP,一切都在本地很好,但是,我必须打开一个终端并启动服务器。

我的问题是,是否有任何教程显示如何将Ratchet WebSocket部署到服务器中(因为我正在某处托管Web应用程序)。我一直在寻找很长一段时间,似乎没有人澄清如何在服务器中部署websockets(Apache)

2 个答案:

答案 0 :(得分:2)

他们不是。由于Ratchet是一个PHP框架,它运行在PHP中。当您通过Apache httpd Web服务器提供网页时,您只是使用mod_php通过HTTP发回响应,但Apache httpd不支持Web套接字。因此,如果您使用的是Ratchet PHP,则必须在PHP中运行Web套接字服务器。

另外,请注意Ratchet Documentation已经向您展示了如何在生产中部署它。我们的想法是在supervisord中运行服务器,这是在* nix环境中守护进程的最简单方法。

  

在生产中运行Ratchet时,强烈建议从suporvisord启动它。 Suporvisor是一个守护进程,它启动其他进程并确保它们保持运行。如果由于任何原因你的长期运行Ratchet应用程序停止,主管守护程序将确保它立即开始备份。

setup http://socketo.me/assets/img/proxy-arch.png

请注意,如果您在Apache / Nginx网络服务器之间进行负载平衡,则需要将HAProxy作为Web Socket服务器和常规Web服务器之间的附加反向代理。

答案 1 :(得分:1)

我写了一篇很棒的教程(没有偏见:P)关于如何从头开始并在ubuntu服务器上启动并运行棘轮Web套件。

http://blog.samuel.ninja/the-tutorial-for-php-websockets-that-i-wish-had-existed/

基本思想是制作服务conf文件以将php文件作为服务运行。