gpt4 book ai didi

c++ - 如何将守护进程与 Web 服务器连接(例如通过 FastCGI)?

转载 作者:太空宇宙 更新时间:2023-11-04 12:06:03 25 4
gpt4 key购买 nike

我正在用 C++ 编写一个程序,它将一直在后台运行以执行不同的任务 - 一个守护进程。
除了 Web 应用程序应与其通信的常规任务(执行 COMET 模式中的 AJAX 请求 = 许多打开但休眠的连接)。

所以问题是:我应该如何将它连接到 Web 服务器(apache 和 lighttpd 是相关的)?

在我阅读的内容中,FastCGI 对于该任务非常有趣,但我阅读的所有引用资料都在谈论网络服务器在必要时启动 FastCGI 应用程序。这在这里行不通,因为守护进程已经在运行了……

我还读到 Web 服务器将通过 socets 与 FastCGI 应用程序通信——所以这对我来说可能是一个入口点,守护进程将“只”需要与这样的套接字通信。

但是是否有好的库可以用于此?
查看 http://cppcms.com/wikipp/en/page/main 的特征这对我来说看起来很有趣——但这对我来说行得通吗?是否可以将其精简 - 甚至提供 SQL 连接对我的情况来说也太重了......

那你能给我什么建议呢?

PS:在性能方面,我认为单线程但异步实现适用于守护进程 <-> 网络服务器胶水。

最佳答案

FastCGI 是与网络服务器通信的标准协议(protocol)。所有提到的 Web 服务器都可以通过 fastcgi 与远程守护进程通信。

http://cppcms.com/wikipp/en/page/cppcms_1x_tut_web_server_config

此外,如果您正在寻找 Comet 支持,那么 CppCMS 本身就可以为您提供:

http://blog.cppcms.com/post/107

And could it be stripped down - offering even a SQL connection is far too heavy for my case...

CppCMS 库非常小,也可以减小它的大小:

http://cppcms.com/wikipp/en/page/cppcms_1x_build#Build.Options

SQL 连接 CppDB 也是独立的部分。

Performance wise I recon a single threaded but asynchronous implementation would work for the deamon <-> web server glue.

它是标准的 CppCMS 运行模式之一——运行异步 Web 应用程序。

更新:

Of what I've read FastCGI would be very interesting for that task, but all references I've read were talking about the web server starting the FastCGI application when necessary. This wouldn't work here as the deamon would already be running..

确实有些 web 服务器启动了快速的 cgi 应用程序,但是:

  • Lighttpd 允许启动 FastCGI 和 SCGI 应用程序或连接到独立应用程序
  • Cherokee (AFAIR) 允许启动 FastCGI 和 SCGI 应用程序或连接到独立应用程序
  • Apache :

    • mod_fascgi 允许启动 FastCGI 应用程序或连接到独立的应用程序
    • mod_scgi 连接到独立的应用程序 - 不启动应用程序。
    • mod_fcgid 总是启动应用程序 - 不适合你

    另外,作为一般说明,apache 不适合处理许多空闲连接的模式,因为它为每个连接使用线程(甚至依赖于 mpm 的进程)。

  • Nginx - 根本不启动应用程序,但是对于 fastcgi,由于缓冲,目前不是 cometd 流的最佳选择,因此 SCGI 与 nginx 会更好(假设您使用的是最新的 nginx 版本)

小提示:SCGI 是一种与 FastCGI 非常相似但简单得多的协议(protocol)。

关于c++ - 如何将守护进程与 Web 服务器连接(例如通过 FastCGI)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com