我什么时候应该使用Perl CGI而不是PHP(反之亦然)?

2022-08-30 22:40:45

出于业余爱好的目的,我在托管服务器上有一个共享空间,它提供PHP和Perl CGI,就像其中许多一样。我已经在几个地方读到CGI脚本现在已经过时了,我认为主要是出于性能问题(比如PHP或vanilla Perl CGI更快吗?

但是由于我刚刚开始学习Perl,我不想浪费时间在PHP中实现在Perl中更容易(或唯一可能)的解决方案。

还有样板问题,我知道CPAN(那是存在,还没有内容),但不熟悉PHP库(尽管我毫不怀疑它们存在)。我不准备从头开始编写登录过程或基本的用户管理10 ^ 10次。

在这一点上,我也不会奢侈地浪费大量时间在业余爱好项目的研究上,所以我想,让我们请专家抢占先机。


答案 1

CGI的“过时”性实际上只是一个因素,如果你正在做大型,复杂的网站,有很多页面浏览量。

许多人认为CGI已经过时了,他们并不真正了解CGI是什么。人们普遍认为CGI本质上是一种基于Perl的技术。许多人攻击CGI是为了消除对Perl的邪教攻击,以支持他们支持的任何语言。如果你想成为一名真正的技术专家,你需要了解基本问题,并根据情况的事实做出选择。

CGI是一个与Web服务器的接口,允许您用任何语言编写交互式页面 - 甚至是funge。当服务器收到对由 CGI 脚本控制的页面的请求时,服务器将运行该脚本并将结果返回给请求者。

如果您的编程语言在每次执行时都需要加载 VM、解释器或编译器,则每次访问页面时都需要此启动时间。

CGI加速器,如FastCGI,mod_php,mod_perl等,始终将解释器/ VM保存在内存中,可以保持库加载,甚至可以缓存脚本中的字节码以减少脚本启动开销。

如果您正在制作一个简单的,个人或业余爱好的网站,CGI就可以了。PHP也是如此。

如果您的网站需要更快的技术,则可以转向mod_perl,FastCGI或其他CGI加速技术。

您使用哪种语言应该由它提供的工具以及它们如何满足您的需求来决定。

  1. 列出您需要的功能。
  2. 列出交易破坏者名单。
  3. 现在,根据这两个列表检查每个可能的工具集。
  4. 哪一个最好?测试它。
  5. 它很糟糕吗?将其从列表中删除,然后返回到步骤 4。

另外,我建议不要使用befunge。仅仅因为它是可能的,并不意味着你应该使用它。


更新:正如mpeters所指出的,mod_perl,mod_php,mod_ruby等不仅仅是CGI加速器;它们提供对Apache API的访问。它们充当CGI加速器,但可以做很多事情,更多,更多的事情。

FastCGI是一个纯粹的CGI加速器。

更新 2:PHP 和 CGI 并不相互排斥。PHP可以作为CGI安装。PHP通常与FastCGI一起使用。


答案 2

对于决定使用什么爱好来说,这是一个相当主观的问题。在研究了PHP之后,我决定将Perl作为一种爱好,并且不喜欢我无法阅读大多数PHP并且被内置函数列表所吓倒的事实。

我做的前几件事是用于联系表单的CGI脚本和相册生成器。我正在使用廉价的共享托管计划,我没有遇到任何性能问题,因此性能问题从未发挥作用。

相反,comp.lang.perl.misc和CPAN的存在确保了我从未重新考虑过我不深入研究PHP的决定。

与此同时,我意识到我网站上的大部分内容一旦生成就是静态的,所以现在我编写Perl脚本来离线生成内容。

所以,我的答案是,选择一个小项目,任何事情都可以,并使用Perl和适当的CPAN模块来实现它,看看你是否喜欢它。


推荐