有CGI的替代品吗(我真的需要一个替代品)吗?
时间:2020-03-06 14:47:11 来源:igfitidea点击:
我正在设计一个应用程序,该应用程序将由3-4个服务组成,这些服务作为单独的进程运行,并由适当的IPC链接。该系统将有一个Web界面,我想使用那里的任何Web服务器。
应该在某些URL下访问Web界面,该URL允许同一Web服务器上的其他URL做完全不同的事情。我打算使用该URL下方的路径来指定Web界面应执行的操作。它具有可供网络上其他应用程序使用以及人类在浏览器中进行交互的功能。
袖手旁观,我将按以下方式工作:
- 使网络服务器针对收到的每个请求启动一个CGI进程(例如Apache中的SetHandler)
- 让CGI连接到IPC
- 让它从后端服务中获得所需的一切
- 让CGI根据服务的答案返回HTML / XML以及任何HTTP状态
现在,我真正想要的是避免前两个步骤,或者,如果不能避免,则避免第二个步骤,因为我担心我浪费不必要的开销(其他应用程序发出的请求可能很频繁) )。
例如,PHP可以打开与MySQL数据库的持久连接,这些连接可以在脚本的运行时生存下来,并且下次无需重新创建,尽管我不知道它们的实际操作方式。另外,据我了解,服务器启动时会一次加载Apache模块,因此这可能省去了第一步,但将我与Apache捆绑在一起。
那么,有什么好的方法可以将特定URL的处理程序挂接到不同的Web服务器中?我不想处理HTTP,否则我可能只对第二台服务器使用代理设置,但这似乎正在彻底改变。如果我们认为CGI很好,并且有一些示例可以处理大量类似结构的请求,请告诉我。
解决方案
好吧,我以前忽略了这一点。在这里解释我的问题使我想到了:
Instead of creating a new process for every request, FastCGI can use a single persistent process which handles many requests over its lifetime. -- Wikipedia: FastCGI
即使在中等负载下,CGI也是一个不可缩放的野兽。 FastCGI是一个选项,但是我们可能还会找到一个mod_XXXX软件包,其中XXXX是语言名称。例如,有一个针对ruby,perl和python的mod,也许还有其他几个。