在没有http的同一服务器上从php发送信息到ngnix

Rus*_*anN 9 php connection real-time nginx rabbitmq

我们正在开发一个实时应用程序,我们正在使用nginx推送流模块作为websockets部分.首先,数据从客户端发送到php脚本,该脚本执行一些身份验证并将所需信息存储在数据库中,然后将信息推送到nginx,然后将其发送给特定套接字上的订阅用户.通常会出现这样的情况:从这个脚本到本地nginx有多30个http请求(我不确定这是一件坏事吗?).

问题
是否可以在没有http请求的情况下将信息从php发送到nginx?有没有办法让我的PHP脚本可以与nginx通信?处理这种通信的最佳做法是什么?每个PHP脚本发送30多个http请求是一个好习惯吗?

我已经阅读了一些AMQP解决方案,但没有找到nginx是来自rabbitmq的消息的消费者的信息.

如果不清楚,我会很乐意提供任何其他信息.

Joh*_*Siu 3

我假设如下:

当前工作流程:

  1. 用户从命令行运行 php 脚本,该脚本使用 http 请求与 Nginx 中的服务器端脚本/cgi 设置进行通信
  2. Nginx 中的服务器端脚本/cgi 将获取传入数据,对其进行处理并将其放入数据库中,或发送给最终用户

OP关注:

命令行 php 脚本使用 http 协议与 Nginx 服务器端脚本通信的效率,由于通信发生在同一服务器内,这可能有点过分了。

提案1

  1. 命令行 php 脚本会将所有信息写入文件,然后向 Nginx 服务器端 cgi 脚本发送一个 http 请求
  2. Nginx 服务器 cgi 脚本在收到请求后,将从文件中获取所有信息,然后对其进行处理
  3. ramfs(ram 磁盘)可用于最大限度地减少对物理 HD 的 I/O

建议2

将命令行 php 脚本合并到 Nginx 服务器端脚本中,并为其创建一个 Web 界面。当前命令行用户将登录网页来控制他们使用命令行工具执行此操作的过程。

优点:不再有脚本间/进程间通信。整个工作流程是在一个过程中进行的。这对于未来来说也可能更具可扩展性,因为多个用户可以通过 Web 界面登录并远程处理该过程。此外,它们不需要操作系统级别的帐户。

缺点:可能需要更多的开发时间。(但您只需维护一个代码库,而不是两个。)