【发布时间】:2015-01-11 18:32:10
【问题描述】:
我正在学习 Perl 并试图了解 Perl 和 CGI 之间的区别。我从this website 中找到了一些定义,上面写着,
"可以设置 HTTP 服务器,以便每当一个文件 在某个目录中请求不发回文件; 相反,它作为程序执行,并且无论该程序输出什么 发回给您的浏览器显示。这个函数被称为 通用网关接口或 CGI 和程序称为 CGI 脚本。”
所以我的问题是,不仅 CGI 脚本会作为执行文件发送,所有其他服务器脚本语言都会作为执行文件从 HTTP 服务器发送。那么,CGI 的主要目的是什么?
我很想知道答案,因为我真的很困惑。这个问题可能很愚蠢,但我需要知道答案。
例如:
#!/usr/bin/perl
print "Content-type:text/html\r\n\r\n";
print '<html>';
print '<head>';
print '<title>Hello Word - First CGI Program</title>';
print '</head>';
print '<body>';
print '<h2>Hello Word! This is my first CGI program</h2>';
print '</body>';
print '</html>';
1;
如果我将它保存在 .pl 和 .cgi 扩展名中并运行这两个程序,我会得到相同的输出。那么cgi脚本和perl有什么区别呢?
【问题讨论】:
-
简而言之:您可以使用任何编程语言进行CGI。 Perl 是一种编程语言。
-
网络服务器可以运行任何可执行文件并将结果返回给浏览器。 Perl 曾经是(现在仍然是)一个常见的选择。但只是为了一笑,我用 C 编写了一个“CGI 脚本”。
-
@Sobrique “但为了一笑,我已经用 C 语言编写了一个‘CGI 脚本’”你的意思是什么。我在 C 中开发 CGI 程序以供工作。使用 C 是否有任何特殊问题,或者 perl 是否提供了一些优势。
-
当涉及到大多数 CGI 脚本正在执行的文本处理密集型操作类型时,我发现 C 是一个糟糕的选择。通常它是一个 cgi 脚本,因为它是用一种脚本语言完成的 - 很少有你得到的东西与 need C 的性能紧密耦合,但也可以通过 web 提供服务。