草庐IT

php - 在没有http的情况下从同一服务器上的php向ngnix发送信息

coder 2024-01-01 原文

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

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

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

如果有任何不清楚的地方,我很乐意提供任何其他信息。

最佳答案

我假设如下:

当前工作流程:

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

OP 问题:

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

提案 1

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

提案2

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

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

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

关于php - 在没有http的情况下从同一服务器上的php向ngnix发送信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29584618/

有关php - 在没有http的情况下从同一服务器上的php向ngnix发送信息的更多相关文章

  1. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  5. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  6. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  7. ruby - 默认情况下使选项为 false - 2

    这是在Ruby中设置默认值的常用方法:classQuietByDefaultdefinitialize(opts={})@verbose=opts[:verbose]endend这是一个容易落入的陷阱:classVerboseNoMatterWhatdefinitialize(opts={})@verbose=opts[:verbose]||trueendend正确的做法是:classVerboseByDefaultdefinitialize(opts={})@verbose=opts.include?(:verbose)?opts[:verbose]:trueendend编写Verb

  8. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  9. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  10. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

随机推荐