mod_perlの方がperlより早いとい書いてあるサイトはやまほどありますが、いったいソースは何が違うのかさっぱりわかりません。実際に何%程度異なるのもわからないので、困っています。
mod_perl本というのはなさそうなので、
perlとmod_perlのソースの違いがわかるサイトや本はあるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

この本は?



うちの、Mac OS X 10.2.6に標準添付のapacheでだと、
この程度の差:

CGI = 6.2993411 sec.
mod_perl = 4.7139311 sec. (77.4%)

10リクエスト分のPerlスクリプト呼び出しの平均値。
あんまり当てにならん数値ですが。

参考URL:http://www.oreilly.co.jp/BOOK/wrapmod1/
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qperlとmod_perlの併用について

同一Webサーバ上で通常のperlとmod_perlを併用することは
可能でしょうか?

バーチャルホストを使用してWebページ用のディレクトリは
通常のperl仕様のWebページとmod_perl仕様のWebページと分けて
構わないのですが・・・

よろしくお願いします。

Aベストアンサー

Perlが必須かmod_perlが必須か、ということではなく、mod_perlを使うか使わないか、という差になるはずです。
いずれにしても、Perlは必須なので。

2つのWebページの片方は、Perlで出力するWebページ(拡張子 .cgi)で、もう片方はmod_perl仕様で出力するWebページ(拡張子 .mcgi)とすれば、先の設定でいけるんですけど。
※.mgciを利用するなら mime.types の設定も必要か

設定については、検索するか本を購入。
っていうか、自分で調べたり、実際に試したりしてないのかな?

Qmod_perlのキャッシュについて

はじめまして、isi0033と言います。
下記のご回答宜しくお願い致します。

現在、レンタルサーバを借りてapache,mod_perlでシステムを構築しているのですが、潜在的なバグをもったプログラムにアクセスし、一度でも、ブラウザに『Internal Server Error』を表示されると、それがキャッシュとして残ってしまい、プログラムのバグを修正しても、『Internal Server Error』が表示されたりします。
何度かリロードすると正しく表示されるのですが、
とても安心して公開できません。

レンタルサーバでは、Apache::Registryが使われているようで、mod_perlについて色々調べると、Perlプログラムを読込んでコンパイルしたものをメモリにキャッシュするとありました。

このメモリをいったんクリアする設定or方法等、ご存知の人がいましたら、教えてください。

Aベストアンサー

直接呼び出されたファイル(.cgi)は、一応更新日を
確認して再読み込みしてくれてるらしいです。
(が、うまくいかないと時も結構あった気がする)

use、requireされたファイルは
BEGIN { delete $INC{'hoge/fuga.pm'} }
で、再読み込みしてくれるらしいですが、
これはやったことないので伝聞です。

とりあえず、mod_perl環境下で潜在的なバグを持ったプログラムを
安心して公開するのはかなりきついと思いますよ。

Qmod_perl2を複数起動する際のpidファイル指定

mod_perl2を複数起動する際のpidファイル指定

既にmod_perl2をインストール済みで動作していたのですが、今、1台のサーバ上で複数起動することを試しています。
設定ファイルやポート番号が重複しないようにして動してみた所、片方ずつならば指定した設定で起動できました。
が、二つを同時に起動すると同じpidファイル
/usr/local/modperl2/logs/httpd.pid
が指定されてしまい、後に起動した方が上書きしてしまいます。

lsof -i:xxxx など見てみても、片方ずつならば各指定したポートが開かれているものの、両方起動すると後から起動した方のみのポート開いている状態が確認できます。

mod_perl2起動時にpidファイルを指定するには、どうしたら良いでしょうか?

Aベストアンサー

Apache httpd.conf の PidFile ディレクティブで位置を指定します。
起動する Apache 毎に違う場所を指定してください。

参考URL:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#pidfile

Qmod_perlで動作していることを画面上に表示させたい。

Apache2(Win)でmod_perlをインストールをして、VirtualHostを使っております。
aサイトでは、mod_perlなし
bサイトでは、mod_perlあり

アクセスして早くなった感じはあまりしませんが、
mod_perlで正しく動作しているという確認をしたいのですが、わかる方法はありますか?

Aベストアンサー

mod_perlの下で動作している場合、環境変数MOD_PERLにmod_perlのバージョンが入ります。

print "Content-Type: text/plain\n\n";
print $ENV{MOD_PERL};

などとして確認してみてください。

蛇足ですが、サーバにmod_perlが正しくインストールできているかどうかは、環境変数SERVER_SOFTWARE内に"mod_perl"という文字列があるか否かで判断できます。

Qmod_perlとディレクトリ

以下のhttpd.confでAliasをコメントアウトして、
http://localhost/a/にアクセスすると、
Perlの【$ENV{MOD_PERL}】の部分が【mod_perl/2.0.2】と表示されますが

Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/
を有効にして、

http://localhost/にアクセスすると、
Perlの【$ENV{MOD_PERL}】の部分が【】となり、どうもmod_perlで動作していないです。


そうかといって、 <Location /a>を<Location />として全体をmod_perlすると
sample.htmlなど cgi以外が正しく動作しないので、困っています。


mod_perlで動作するのは特定のディレクトリ(例えば /cgi-bin)の下限定として、
アクセス時に http://localhost/のようにあたかもpublic_htmlの下にあるように動作したいです。


#Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/
#=== conf/httpd.conf ( mod_perl 2.x )
<IfModule mod_perl.c>
LoadFile "C:/usr/local/bin/perl58.dll"
PerlRequire "C:/usr/Apache2/conf/startup.pl"
<Location /a>
PerlSendHeader On
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
#PerlHandler Apache::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
Allow from all
</Location>
</IfModule>

以下のhttpd.confでAliasをコメントアウトして、
http://localhost/a/にアクセスすると、
Perlの【$ENV{MOD_PERL}】の部分が【mod_perl/2.0.2】と表示されますが

Alias / c:/usr/Apache2/VirtualHost/mylink-info/public_html/a/
を有効にして、

http://localhost/にアクセスすると、
Perlの【$ENV{MOD_PERL}】の部分が【】となり、どうもmod_perlで動作していないです。


そうかといって、 <Location /a>を<Location />として全体をmod_perlすると
sample.htmlなど cgi以外が正しく動作しな...続きを読む

Aベストアンサー

<Location ~>
ではなく
<Files ~>
でやったらどうなりますかね?
(自分は試してないので)


<Files ~ "\.cgi$">

</Files>


おすすめ情報