首页 > 学技术 > 技术网文 > Perl > 正文

[精华] cgi script如何昇級至mod_perl...


来源 chinaunix.net kuqin整理

1.首先確定mod_perl,已經在apache中且能正常啟動。
  相關的設定請去查別的文章..這裡不作說明..
2.在apache 1.3或2.0的httpd.conf中加入
mod_perl 1.X版本上:

PerlModule Apache::PerlRun

Alias /perl-bin/ /usr/local/apache/perl-bin/
<location /perl-bin/>;
 SetHandler perl-script
 PerlHandler Apache::PerlRun
 Options +ExecCGI
 PerlSendHeader On
</location>;

這個方法與原本的方法並沒有太大的差異,主要是因為每次access
同一個CGI script時,都需要透過Apache內的perl interpreter 
compile再執行,所以速度上並沒有太大的增加。

2.利用Apache::Rigstry

PerlModule  Apache::Rigistry
Alias /perl-bin/ /usr/local/apache/perl-bin/
<location /perl-bin/>;
 SetHandler perl-script
 PerlHandler Apache::Rigistry
 Options +ExecCGI
 PerlSendHeader On
</location>;

用上述這個方法的好處是,你的CGI script只需要在第一次被呼叫的時候
compile並保存下來,接下來access相同的CGI script時,會直接呼叫已經編譯
好的碼,而不需要再重新compile一次,而PerlRun則是每次access,都用
Apache裡面的perl 編譯器編譯,因此會比較慢。如果程式碼有作修正,則
Apache會馬上重新compile新的可執行碼,可以在error_log中看到這個動作。
但是用Apache::Rigistry的方式,對於語法的檢查相當嚴格,否則程式執行中可
能會造成memory leak的問題。
1.在script開頭一定要用
use strict;
use warnings;
2.open一個 file一定要close 該filehandle。
3.開啟databasehandle一定要close databasehandle。
….
如果不這麼做,則在執行CGI Script時,可能會有很多不可預期的問題產生。

  上述方法從mod_perl developer’s cookbook這本書中擷取出來的。若還
有看到什麼有用的東西,再分享給大家。



 laoxia 回复于:2003-03-04 12:25:46

啊就好哦,多谢也


 apile 回复于:2003-03-04 12:29:05

如果是安裝mod_perl 2.X的版本...
請將Apache::Registry與Apache::PerlRun改成..
ModPerl::Registry與ModPerl::PerlRun...
就可以正確執行了...




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=26742
转载请注明作者名及原文出处



收藏本页到: