我已经长时间使用Perl进行编程,一直使用CGI技术构建我的应用程序。现在我考虑重建这些应用程序并在FCGI上编写新的应用程序。请解释FastCGI和PSGI之间的区别,例如Starman。另外,请解释今天流行的基于FCGI的Perl框架是什么?我了解到可以使用CGI::Fast将我的CGI脚本强制转换为FCGI脚本。是否还有其他模块可以实现这一点?
谢谢!
谢谢!
通用网关接口(CGI)是一种简单的接口,用于在信息服务器下以平台无关的方式运行外部程序、软件或网关。目前,支持的信息服务器是HTTP服务器。
该接口自1993年以来一直被万维网使用。本规范定义了所谓的“CGI/1.1”接口及其在Unix(R)和AmigaDOS(tm)系统上的使用。
在标准模型中,Web服务器每次需要一个外部程序时都会启动它,将数据编组成标准格式并将其传递给程序(可以作为环境的一部分或通过外部程序的标准输入,具体取决于使用的HTTP方法(GET、POST等)。程序处理数据,通过将标题和内容打印到标准输出返回其数据,然后退出。
CGI的主要缺点一直是在每次调用时启动外部程序的费用。在Unix上,这需要Web服务器在内存中创建自身的副本(fork),然后将外部程序覆盖到该副本上(exec)。fork/exec周期在计算上很昂贵,特别是当你谈论一个大型Apache进程(多MB内存占用)与一个需要解析Perl程序才能运行的Perl解释器叠加在一起时。