首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl与FastCGI

Perl与FastCGI
EN

Stack Overflow用户
提问于 2013-12-04 13:44:06
回答 2查看 5.3K关注 0票数 4

我在Perl上编程已经很长时间了,我一直使用CGI技术来构建我的应用程序。现在我想重建它们并在FCGI上写新的。请用f.e解释一下FastCGI和PSGI之间的区别。史达曼。此外,我还想解释一下Perl框架(使用FCGI的)在今天的“趋势”是什么?我知道我可以强制我的CGI脚本使用CGI::Fast作为FCGI脚本工作。还有其他模块来完成这个任务吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-04 16:29:18

你从错误的角度看这件事。不要考虑如何部署程序。相反,将您的程序写入PSGI接口。然后,您就可以在任何环境中部署应用程序- CGI、FastCGI、mod_perl等,而无需更改任何内容。

您可以使用Plack::请求Plack::回应这样的模块编写“原始”PGSI,但最好使用舞女催化剂这样的框架。

如果您有要在PSGI环境中运行的现有CGI程序,请参阅Plack::App::WrapCGI

票数 6
EN

Stack Overflow用户

发布于 2013-12-04 16:37:06

理解CGI是信息服务器如何将数据传递给单独的程序的标准定义是很重要的。

公共网关接口(CGI)是以独立于平台的方式在信息服务器下运行外部程序、软件或网关的简单接口。目前,所支持的 信息服务器是HTTP服务器。 该界面自1993年以来一直被万维网所使用.该规范定义了名为“`CGI/1.1”的接口及其使用 在Unix(R)和AmigaDOS(tm)系统上。

在标准模型中,web服务器每次需要外部程序时都启动外部程序,将数据编组成标准格式并将其传递给程序[作为环境的一部分,或通过外部程序的标准输入,具体取决于HTTP方法(GET、POST等)。使用。程序处理数据,通过打印标头和内容返回数据到标准输出,然后退出。

CGI的主要缺点一直是每次调用时启动外部程序的开销。在Unix上,这要求web服务器在内存(叉)中创建自身的副本,然后将外部程序覆盖到副本(exec)上。fork/exec循环在计算上非常昂贵,特别是当您谈到一个由Perl解释器覆盖的大型Apache进程(多MB内存占用空间)时,它需要解析Perl程序才能运行。

为了从方程中去掉fork/exec循环,开发了几个新的东西。Mod_perl将Perl解释器嵌入到apache进程中,从而消除了每次调用时需要使用叉/exec的情况,并且还允许缓存解析的perl程序。各组织报告的数字显示,吞吐量的增长在任何地方都是CGI的20至100倍。

第二种方法,称为FastCGI,也是在同一时间开发的。在FastCGI中,在启动http服务器的同时启动外部程序(通常是容器或应用服务器),并且http服务器代理请求到FastCGI进程。这个模型提供了删除from /exec循环的相同好处,并且有一组与mod_perl不同的优点/缺点。

最后,无论您选择哪种方法,CGI/FastCGI/mod_perl,您的程序都必须了解如何获取web服务器传递给它的数据,这就是问题的关键所在,几乎所有的CGI后技术都定义了它自己向程序传递数据的方式( PSGI中的GI仍然支持Gateway接口),但是提供了一个适配器来将其转换成CGI模型,以帮助更容易地采用。

我不知道我是否回答了你的问题,但谢谢你的提问。我喜欢写这个答案;-)

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20376990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档