cgi or mod_perl

摘自perlmonks.orghttp://www.perlmonks.org/?node_id=518869)的一段讨论:

Re: cgi or mod_perl
by astaines on Dec 24, 2005 at 10:12 UTC

A good question, but, at least partly, the wrong question. CGI is a useful low-level suite of tools for emitting HTML. It will happily emit HTML to a file, to a screen, or to a web server. Apache will display the output from programs written with CGI, but you need a perl interpreter, either your normal one (/usr/bin/perl or whatever), or one built into Apache.

mod_perl is a very different animal, it is, specifically, a perl interpreter embedded into the Apache webserver. As such it doesn't do anything unless and until you feed it.

CGI is quite a good choice for feeding mod_perl, athough not the only one. It is also easy to learn, and once you understand how CGI works, learning other frameworks will be significantly easier. mod_perl can do stuff that CGI can't, but you won't get near that stuff to start with.

My own 2 cents - start with CGI and the perl interpreter on your system if you're using Linux. In Windows go with mod_perl from day 1, only because it's a bit easier to setup. If your Apache has mod_perl set up, use it. You normally only need mod_perl if your site gets very popular.

Have fun, and a Happy Christmas to all

-- Anthony Staines

对用perl写cgi的新手,可以帮助理清几个概念之间的关系。

转载:普通CGImod_perlCGI编程注意与区别!

10-25

以下为我的一些经验,如有错误存在请高手更正,其中一部分是:飞云小侠、天水、wxy的帮助。以下内容也适用在将普通cgi改为mod_perl程序 rnrnmod_perl真是好东西,可以加快CGI编程的速度。在使用普通方式编写cgi的朋友们可以考虑采用这种方式编程。依据是这样的:访问量不底的程序。 rnrnmod_perl的安装建议: rn1.在经过安装mod_perl后请一定要将mod_perl的cgi程序与普通的cgi程序严格分离开,否则会增加apache的负担。 rn2.如果对程序的访问量很高请单独为mod_perl安装一个apache,因为mod_perl的程序是驻留内存等待请求,如果访问量过高apache会受不了给down掉的。 rnrn对mod_perl程序的编写与升级普通cgi: rn1.mod_perl的程序运行上毕竟与普通的不相同cgi不同,请不要直接使用普通的cgi rnrn2.在编写程序中一定要声明变量,否则会出现变量上的污染。例如:#!/usr/bin/perl rn$value=$value+1; rnprint "Count:$value"; rn如果在mod_perl下运行就会每次累加虽然有用。但是如果你不注意就会出大问题拉(详细请看英文资料) rnrn3.在mod_perl下有的时候程序不需要打印content-type: text/html\n\n具体的看apache的http.conf关于mod_perl解析是否设置了PerlSendHeader On来定。 rnrn4.mod_perl可以突破mysql的200多人同时请求限制。如果你想拥有这样的功能还需要下载Apache::DBI模块。 rnrn5.并不是下载这样的模块就可以用,如果你使用率很高请再apache下的httpd.conf中关于mod_perl的解析中设置PerlRequire filepath/mod_perl/startup.pl。这个startup.pl在mod_perl的安装文件里有。你可以在这个文件中使用use Apache::DBI。这样一旦apache启动会自动运行apache::DBI rnrn6.如果你想让你使用mysql的程序在别人没有mod_perl的环境中运行。请使用这个代码: rnif( $ENVMOD_PERL ) rn eval 'use Apache::DBI'; rn else rn eval 'use DBI'; rn rn这样系统就可以根据你的环境来使用apache::Dbi还是dbi rnrn7.mod_perl程序对路径问题很敏感。请不要使用通配符,可以使用一个模块获得当前路径(适用linux与win32): rnuse FindBin qw($Bin); rnuse lib "$Bin"; rnrnrn暂时想不出来其他的了。就这样吧。 rnrn作者和转载都是:饿

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭