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

标签 php angularjs apache websocket ratchet

我已经创建了一个投标系统,该系统应该可以实时运行并在有人对某个项目投标时更新投标人表。

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

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

我的问题是是否有任何教程显示如何将 Ratchet WebSocket 部署到服务器中(因为我在某处托管网络应用程序)。我已经搜索了很长时间,但似乎没有人阐明 websockets 如何部署在服务器 (Apache) 中

最佳答案

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

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

When running Ratchet in production it's highly recommended launching it from suporvisord. Suporvisor is a daemon that launches other processes and ensures they stay running. If for any reason your long running Ratchet application halted the supervisor daemon would ensure it starts back up immediately.

setup
(来源:socketo.me)

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

关于php - 使用 PHP 在 Apache 服务器中部署 WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33600293/

相关文章:

php - 如何使用 Imagemagick PHP API 将 .pdf 文件转换为 .png

javascript - ajax 调用在 IE11 和 chrome 中无法正常工作

php - $this 关键字是什么意思?

php - 如何对包含正斜杠的查询字符串进行编码?

apache - www 到非 www 重定向不起作用

php - 如何在 Apache 上安装 PostgreSQL 驱动程序?

javascript - 比较引起消化的方法

javascript - Angular 服务复制数据

javascript - 当作者说 "AngularJS has compiled the DOM"时,它实际上意味着什么?

apache - Htaccess : URL Rewriting not causing 404 on nonexisting pages and not working as expected