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

时间:2012-08-20 17:59:14

标签: c++ comet fastcgi

我正在用C ++编写一个程序,它将在后台运行以执行不同的任务 - 一个守护。
除了通常的任务之外,Web应用程序应该与它进行通信(执行COMET模式时的AJAX请求=大量打开但正在连接的连接)。

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

我读过的内容FastCGI对于该任务非常有趣,但我读过的所有参考文献都在谈论在必要时启动FastCGI应用程序的Web服务器。这在这里不起作用,因为deamon已经在运行......

我还读过Web服务器会通过社交与FastCGI应用程序通话 - 这对我来说可能是一个切入点,守护者“只”需要与这样的套接字交谈。

但是有没有可用的好图书馆? 看一下http://cppcms.com/wikipp/en/page/main的特征,它对我来说看起来很有趣 - 但是在我的情况下这可行吗?它可以被剥离 - 甚至提供SQL连接对我的情况来说太沉重了......

那么你能给我什么建议?

PS:性能明智我调查单线程但异步实现适用于deamon< - >网络服务器胶水。

1 个答案:

答案 0 :(得分:1)

FastCGI是与Web服务器通信的标准协议。所有提到的Web服务器都可以通过fastcgi与远程deamon应用程序通信。

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

另外,如果您正在寻找Comet支持,那就是CppCMS本身为您提供的支持:

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

  

并且它可以被剥离 - 提供甚至SQL连接对我的情况来说太沉重了......

CppCMS库非常小,它也允许减小其大小:

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

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

  

性能方面我调查单线程但异步实现适用于deamon< - >网络服务器胶水。

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

更新:

  

我读过的内容FastCGI对于该任务非常有趣,但我读过的所有参考文献都在谈论在必要时启动FastCGI应用程序的Web服务器。这在这里不起作用,因为deamon已经在运行..

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

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

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

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

  • Nginx - 根本不启动应用程序,但是对于fastcgi目前不是最好的彗星流因为缓冲,所以SCGI会更好用nginx(假设你使用的是最新的nginx版本)

    < / LI>

小注意:SCGI是非常类似于FastCGI的协议,但非常简单。