【问题标题】:What are CGI scripts used for these days?这些天使用的 CGI 脚本是什么?
【发布时间】:2022-02-13 01:28:22
【问题描述】:

我对通用 Web 编程语言非常熟悉,但我现在使用的工具之一是 CGI。我只能说 CGI 脚本很慢。

CGI 现在仍然普遍使用吗?如果不是,它被什么取代了?
是否有任何 CGI 仍然存在并被积极使用的小众功能?

【问题讨论】:

  • 到目前为止我已经阅读了 2 个答案,我的问题是:是否有任何利基功能可以使 CGI 保持活力和使用?
  • 好的,我现在将删除接受,这也是一个有趣的点。
  • 应该是社区维基
  • @SilentGhost -- 你的意思是,这不是一个编程问题?对我来说似乎是一个。
  • 在我看来它不像社区维基。它有一个非主观的答案。

标签: web-applications cgi


【解决方案1】:

CGI 是协议,它是创建动态页面的最基本和最标准的方式。

有用的情况很多:

  1. 如果您想用不带 mod_XYZ 的语言(比如 C 或 Haskell)创建一个基本应用程序,这可能是计算密集型的。
  2. 在内存昂贵的嵌入式系统中,您更喜欢生成 CGI 脚本 而不是一直牢记在心。
  3. 在某些托管服务上,您希望灵活地使用任何您想要的技术编写服务器端软件,但另一方面,不要使用 FastCGI 将总裁应用程序保存在内存中(例如 Sourceforge 托管)。
  4. CGI 上的负载很低,因此您不必关心每个请求生成应用程序。例如,在像 MoveableType 这样的博客中,只有通过 CGI 完成更新,其余的都是提供的 通过静态页面,CGI 脚本在需要时更改。所以生成 CGI 脚本的成本 非常低。
  5. 当您的大部分内容是静态页面并且您希望通过像 thttpd 这样的服务器来提供它时,很少有操作可以通过它支持的 CGI 完成。

所以... CGI 很简单,但仍然非常有用API,允许简单地做事。

例如,显示服务器正常运行时间的脚本

#!/bin/bash
echo Content-Type: text/plain
echo
uptime

什么可以更简单、更容易和更少依赖网络服务器?

【讨论】:

    【解决方案2】:

    CGI 已被多种 Web 编程技术所取代,包括 PHP、各种 Apache 扩展(如 mod_perl)、各种风格的 Java 和框架(包括 Java EE、Struts、Spring 等)、基于 Python 的框架(如 Django、Ruby on) Rails 和许多其他 Ruby 框架,以及各种 Microsoft 技术。

    我确信 CGI 仍然用于某事,但我猜它主要是一些已经存在多年的代码。维基百科确实提到 FastCGI 与 CGI 类似,但没有巨大的性能缺陷。

    【讨论】:

    • 好吧,我在嵌入式世界中使用 CGI,通过 CGI 网关调用可执行文件,它的性能比 PHP 或 Java 好得多,因为场景背后的页面实际上是用 C 编写的编译可执行文件。但是,用 PHP 或 Java 编写网页比用 C 编写网页要快得多。
    【解决方案3】:

    今天许多遗留网站仍然使用 cgi 构建,尽管现在人们正在远离它。我知道的仍在使用 CGI 的知名应用程序之一是 MovableType blog

    【讨论】:

      【解决方案4】:

      我知道有 2 个正在积极开发的项目,它们仍然使用 CGI 脚本来取得良好的效果。

      第一个是Webmin,这是我多年来一直使用的基于网络的系统管理工具。

      第二个是GitWeb,它允许您为 Git 存储库设置 Web 界面。

      至于 CGI 的速度(或缺乏),我无法对此发表评论。根据我使用 Webmin 的经验,我不能说我在这方面有任何问题。

      【讨论】:

        【解决方案5】:

        不能移植的实时操作系统(例如 PHP)。

        【讨论】:

          【解决方案6】:

          许多共享主机通过 CGI 服务于 PHP、python 和 perl 等服务器端语言

          【讨论】:

            【解决方案7】:

            我仍然在不支持 php 语言的嵌入式计算机上使用它。

            【讨论】:

              【解决方案8】:

              ASP、PHP、ASP.Net、Ruby on Rails 是当今的热门产品。

              【讨论】:

                【解决方案9】:

                与 Cobol 和 Fortran 非常相似,一些基于 CGI 的大型货币系统当然会在未来得到很好的维护。

                并不是说更新的软件不是不时使用所有这些技术构建的。

                【讨论】:

                  【解决方案10】:

                  几个月前我离开的一个项目仍然使用 CGI。然而,该站点的用户群非常小(它只有大约 40 个用户,可能不到 5 个用户经常使用它)。虽然硬件已经更换了 3 或 4 次,但其中一些代码已经运行了近 10 年,几乎没有或根本没有修改。我确信其他技术会提供性能改进,但目前的性能是可以接受的,并且进行更改的人力很短,分布在太多领域,并且不精通网络技术(尤其是我离开后)。这导致了一种“如果它没有坏,就不要修理它!”的态度

                  至于我已经使用/计划调查的替代品:在我的新职位上,我使用 PHP 开发了一个 Web 应用程序。不过,我更喜欢 Python,并计划很快研究 WSGI。我还计划使用 AJAX 替换我自愿维护的非营利性网站上的 CGI 程序。

                  【讨论】:

                  • AJAX 将如何替换 CGI 程序? AJAX 本身并不是一种服务器端技术,它只是一种无需完整页面加载即可运行服务器端脚本的技术。
                  • @DisgruntledGoat:当前页面显示一个表格,其中包含来自后端数据库的数据和表格下方的表格。当用户通过表单提交数据时,CGI 程序会处理并更新表格中的一个单元格。我还没有真正做过任何AJAX,所以可能我不在基地,但我的计划是把表格做成表格,消除单独的表格,并使用AJAX处理用户的条目并直接更新数据库。
                  【解决方案11】:

                  CGI 和更新的技术并不相互排斥。它们可以互补。

                  我的Extreme Precision Binomial Probability Calculator(写于 2020 - 2021 年)是使用 both PHP 和 CGI​​ Perl、与 GMP 以及一点点 JavaScript 一起工作的。

                  Perl 对任意精度算术的支持,以及它与 GNU 多精度算术库 (GMP) 的接口,使其成为实现此类工具的好语言。相同的代码既可以作为 Perl 命令行工具运行,也可以作为 CGI 模块运行。 (事实上​​,在我的服务器上,binomcalc.pl 命令行工具的下载链接实际上只是 binomcalc.cgi 模块的 Linux 符号链接。)

                  PHP(以及 HTML、CSS 和 JavaScript)更适合创建 Web 界面。

                  PHP 代码生成一个 CGI 包含指令,将参数传递给 Perl 代码。然后 Perl 和 GMP 代码进行计算,并生成结果,显示在网页上。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-09-15
                    • 2012-08-13
                    • 1970-01-01
                    • 2022-10-26
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多