トップページphp
1001コメント343KB

mod_perlを使おう!

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん01/11/07 17:42ID:+Gux2iOQ
CGIを激速で実行できるmod_perlについて語りませう。
関連リンク等は>2
0002101/11/07 17:42ID:???
本家
http://perl.apache.org/

日本語解説サイト
http://www1.plala.or.jp/knambo/apa/mod_perl.html

cgi_to_mod_perl(英語)
http://www.perldoc.com/perl5.6.1/lib/cgi_to_mod_perl.html

mod_perl_traps(英語)
http://www.perldoc.com/perl5.6.1/lib/mod_perl_traps.html
0003名無しさん@お腹いっぱい。01/11/07 17:47ID:???
名スレの予感
0004101/11/07 17:52ID:???
最近導入したのですがうまく動いてくれないで困りました。
use strict;はもちろんしてるし、変数の初期化もちゃんとしてて、それでも
動かないから、残っていたグローバル変数も必死(涙 で排除して、
それでも動かないのでよくよくmod_perl_trapsを読むと、「package宣言を
していないファイルをrequireするな」のようなことが書いてあってそれで
なんとか解決しました。html表示用のスクリプト(ヒアドキュメントで
書き出すだけの)をrequireしていたのですが、全部print_htmlという
サブルーチン名にしていて、それが原因でした。
0005101/11/07 17:54ID:???
ところで「グローバル変数は使っちゃだめ」みたいなことはよく言われますが、
環境変数($ENV{...})とかは大丈夫なのかな?
↑実はこれがスレ立てた動機だったりして(笑)

誰か教えて〜
0006名無しさん@お腹いっぱい。 01/11/07 17:57ID:???
mod_perl MLって終わってるの? w
取り合えずFAQは....
正規表現の'o'はダメ
名前空間が変わる、Packageで修飾
exit(0);
$hoge = ''; でクリア
こんな感じ?
0007名無しさん@お腹いっぱい。01/11/07 18:00ID:???
$main::ENV{'HTTP_HOGE'}
0008名無しさん@お腹いっぱい。01/11/08 00:54ID:uKgtvIlV
>>5
%ENVはリクエスト毎にセットしなおされる。
だから、大丈夫だと思う。

といってもApache::Regstryなコードの話ね(あたりまえ)
0009801/11/08 00:55ID:???
う。
Apache::Registryだ。
0010名無しさん@お腹いっぱい。01/11/08 07:45ID:???
コンパイル繋がりでPerlccとかも良い?
FastCGIとかSpeedyとかも    :-)

perlccはB::Cは殆ど速くならないね、ファイルは50KB位のが
800KBとかになった
B::CCに期待したいんだけどこっちは殆どharnessでこけるか
ポインタ周りでヲーニング出て無理やり実行したらコア、って感じ
面白いんだけどあの凶悪なヘッダは追う気にならなかった・・・
0011名無しさん@お腹いっぱい。01/11/08 18:15ID:???
つれづれなるままに、cgi_to_mod_perlの翻訳でも。
0012名無しさん@お腹いっぱい。01/11/08 18:15ID:???
[名前]
cgi_to_mod_perl - CGIの代わりにmod_perlを使うための最初のステップ

[説明]
READMEや他のmod_perlドキュメントに書かれているように、CGIの代わりとして
mod_perlを使うということは、mod_perlパッケージが提供する機能のうちのごく
一部分に過ぎません。ですが、それがmod_perlの一番メジャーな使い方ですので、
すぐ使えるやり方をこの文書で説明します。

[インストール]
INSTALLを読んでください。たいてい次のやり方で大丈夫です。

perl Makefile.PL && make && make install

[設定]
CGI代わりとしてmod_perlを使うときのお勧めの設定です。

Alias /perl/ /real/path/to/perl-scripts/

<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options +ExecCGI
</Location>

'Location'の指すのはURIで、ディレクトリではありません。上の<Location /perl>
というのは、

<Location http://www.hoge.com/perl>;
ということです。
0013名無しさん@お腹いっぱい。01/11/08 18:23ID:???
こうすると、指定した場所の下にあるファイル(あなたのファイルシステムで
/real/path/to/perl-scripts/ 以下にあるファイル)はApache::Registryモジュールに
よって処理されることになります。(Apache::RegistryはCGI環境をエミュレートする
モジュールです。)
ファイルは存在していて、実行可能で、それに'Options ExecCGI'がオンになっていなければ
なりません。

もし、どこに置かれたファイルでもmod_perlが拡張子を見てスクリプトを実行してくれるように
したいなら、設定はこんな感じです:

<Files ~ "\.pl$">
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
</Files>
0014名無しさん@お腹いっぱい。01/11/08 18:35ID:???
'ScriptAlias'はmod_perlでは'効かない'ことに注意してください。

[CGIの移植]

[I/O]
Perl5.004を使っているならほとんどのCGIスクリプトは手を加えずにmod_perlで動くでしょう。
もし5.003をお使いなら、Perlのビルトイン関数 read() と print() はCGIと同じように動いて
くれません。CGI.pmを使っているなら、昔ながらの print() の代わりに $query->print を
使ってください。

[ヘッダ]
mod_perlはデフォルトではヘッダをまったく送りませんが、もし変えたければこうします。

PerlSendHeader On

これでレスポンス行や一般的なヘッダがmod_cgiと同じように送られるようになります。
ですが、mod_cgiと同じように、PerlSendHeaderも終わりの改行コードは送りませんので、
スクリプト自身が送らなければなりません。例えば:

print "Content-type: text/html\n\n";
0015名無しさん@お腹いっぱい。01/11/08 18:40ID:???
もしCGI.pmを使っていて'print $q->header'としているなら、PerlSendHeaderは
必要「ありません」。

[NPHスクリプト]
'nph'CGIスクリプトを実行したいなら、コードにこれを追加してください:
local $| = 1;

普段 PerlSendHeader を On にしているなら、httpd.confにこれを追加してください:
<Files */nph-*>
PerlSendHeader Off
</Files>
0016名無しさん@お腹いっぱい。01/11/08 18:50ID:???
[プログラミング作法]
CGIはだらしないプログラミングを許してくれますが、mod_perlは違います。
なぜでしょうか? CGIスクリプトの一生はは一回のHTTPリクエストで終わりますし、
それぞれ独立したプロセスです。リクエストが終わればプロセスはなくなり、
グローバル変数や開けっ放しのファイルなど、なにもかもきれいに片付けて
もらえます。しかしmod_perlで走るスクリプトはもっと長い生涯を送ります。
何回ものリクエストの間に、一つのプロセスでいくつものスクリプトが処理されます。
つまり、自分で後片付けをする必要があるのです。耳にされていると思いますが:

必ず'use strict'と'-w'オプションを使うこと!
0017名無しさん@お腹いっぱい。01/11/08 18:57ID:???
このことはmod_perlでのPerlでは他のどんな環境での場合よりも重要です。
必要ではありませんが、「強く」推奨されています。それに長い目で見ると
時間の節約にもなります。
スクリプトをきれいに書いておいて損はないですよ!

[落とし穴]
mod_perl_traps参照
0018名無しさん@お腹いっぱい。01/11/08 18:59ID:???
ふ〜時間かかっちゃった。(もうあったりして・・・日本語訳)
mod_perl_trapsは後ほど。
他にやってくれる人がいたらお任せします〜
0019名無しさん@お腹いっぱい。01/11/09 02:11ID:S+GQdZO0
自分のSUN Cobalt RaQ4の環境変数見てみると、
mod_perlとあります。これはもうmod_perlが入っているってことなんでしょうか?
0020名無しさん@お腹いっぱい。01/11/09 02:30ID:???
mod_perlを入れると
$ENV{SERVER_SOFTWARE} に'mod_perl'が追加され,
$ENV{GATEWAY_INTERFACE} が 'CGI-Perl/1.1' になって
$ENV{mod_perl}が設定されるらしい。

iswebはSERVER_SOFTWAREしか変わってない。
0021名無しさん@お腹いっぱい。01/11/09 08:55ID:nd1WMoVX
うちの場合(影響ありそうなもののみ)
SERVER_SOFTWARE = Apache/1.3.20 (Unix) mod_perl/1.26
GATEWAY_INTERFACE = CGI-Perl/1.1
PERL_SEND_HEADER = On
MOD_PERL = mod_perl/1.26
0022名無しさん@お腹いっぱい。 01/11/09 19:12ID:???
>>10
バイトコードじゃ殆ど意味ないねえ...
俺もCCは殆ど使ってないよ
関係無いけど、某無料サーバ(perl他一切無し)にバイナリ上げてhtaccessで
ExecCGIオーバーライドしたらバイトコードが動いた (w
0023名無しさん@お腹いっぱい。01/11/09 20:44ID:???
>>18
ありがとー、trapは一応有るけど機械翻訳丸出しみたい
http://www.google.com/search?q=cache:yAlKb0cn18k:www2.tech-unet.ocn.ne.jp/__dic__/perl/mod_perl_cgi.html+mod_perl_traps&hl=ja&lr=lang_ja
5003以前でprintが駄目ってのが気になるなぁ・・・
バッファが残っちゃうのかな? 5003使ってないから良いけど
0024名無しさん@お腹いっぱい。01/11/09 23:29ID:???
ネストしたサブルーチンはトラップしにくい

おいらは、speedyCGIのほうが好き。
実際mod_perlはリソース食いすぎ
0025名無しさん@お腹いっぱい。01/11/10 18:55ID:QgGGhVTZ
厨な質問なんですが、
PerlCGIで使っていたスクリプトを、そのままmod_perlで動かした場合はどれくらい速くなるものなのですか?
どんな種類のスクリプトに効果的なのかも分かりません。
宜しければ教えていただけないでしょうか?
0026名無しさん@お腹いっぱい。01/11/10 20:44ID:???
>>どれくらい速くなるものなのですか
解らんけど所詮バイトコード並、PerlはPerlだから、4.5倍なんじゃ無いの?
>>どんな種類のスクリプト
呼ばれれば呼ばれる程効果が有る、勝手に永久常駐して自分でリクエスト捌くようなのだと
全く意味無し。

つーかroot持って無いと使えないんだけど、その辺はOK?
00272501/11/10 21:21ID:???
>>26
回答ありがとうございました。
例えばWebチャットの場合は効果がありそうですね。

mod_perlが組み込まれている無料サーバ(珍しいけど)がありますので(^^;;;
0028名無しさん@お腹いっぱい。01/11/10 21:30ID:???
Xreaか・・・
チャット置いてレン鯖板で晒されないようにな w
00292501/11/10 23:07ID:???
>>28
いえ、設置を考えてるのは掲示板なので、普通に使っても問題ないと思います。
でも共有サーバですし、少しでも負荷を削減できないかと、mod_perlの利用を考えました。

お気遣いありがとうございます(^^;
0030名無しさん@お腹いっぱい。01/11/11 22:41ID:???
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl1.html
むつかしい・・・
0031名無しさん@お腹いっぱい。01/12/03 01:28ID:VLJw8Nzl
保守age
0032名無しさん@お腹いっぱい。01/12/07 02:36ID:???
1ch.tvではグローバル変数つかいまくりでも、mod_perlしてました。
先生、mod_perlって別に難しくないんですね!age
0033名無しさん@お腹いっぱい。01/12/08 02:05ID:???
デキネーヨ
名前空間グチャグチャで動く訳ネーダロ -_-...
0034名無しさん@お腹いっぱい。01/12/10 00:26ID:ko+ATGtx
mod_perlなんて使うよりPHP勉強しろ。
もうPerlが滅びるのも時間の問題なのだから。
0035名無しさん@お腹いっぱい。01/12/10 01:19ID:???
>>33
Apache::PerlRunなら動くでしょーよ。へたれだけど。
0036名無しさん@お腹いっぱい。01/12/10 14:22ID:u4VetMyU
>>34
PHPの勢いの方が心配だよ〜。
0037仕様書無しさん01/12/10 19:34ID:???
>>35
ああそっか、使った事無いから>Apache::PerlRun
これだと殆ど意味ないよね? >毎回コンパイル
実験する価値はあるかにゃ・・・
0038名無しさん@お腹いっぱい。01/12/11 06:57ID:???
Perl自体をexec()しない分、CGIと比べると割と軽くなるYO!
CGIをそのまま使える場合も多いから、性能と開発コストを天秤にかければ、
十分ペイする場合も多いような。
0039名無しさん@お腹いっぱい。01/12/11 14:24ID:QvfYRs1F
Apache/1.3.22 (Win32)にmod_perl入れようということで
ソース落としてきたんですけど、makefile.pl実行してもmod_perl.makはみつからないし
makefileはnmakeで通らないしと、なんかおかしいです なんかファイル足らんのかなぁ?
つーかWin32バイナリってどっかにないですかね?
0040抹茶 ◆RojWUtWg 01/12/11 14:58ID:???
なるほど、ちょっと解説サイトを色々見てみたけど
mod_perlという代物はそれほど難しいというわけでもなさそうだ。
0041名無しさん@お腹いっぱい。01/12/11 15:17ID:ebIAeWdW
>>39
PPMでインストールできたと思うよ。
http://apache.perl.org/distributions.html
0042名無しさん@お腹いっぱい。01/12/11 20:43ID:ebIAeWdW
>>40
既存のスクリプトをPerlRunやApacheRegistryで動かす分には
殆ど変更は必要ない。

だけど、やっぱApache::*なモジュールをつくるのが
面白いYo!
0043名無しさん@お腹いっぱい。01/12/11 21:46ID:ORPF/X5f
modperl-mlで出てた。Win32へのmod_perlインストール手順だとさ

http://www.gihyo.co.jp/wdpress/correctVol1_Perl.html
0044のーとりあすびっぐ01/12/13 20:30ID:BEbOFXi+
suexec が使える mod_perl みたいなのってないですかね。
suexec っていうぐらいだから 毎回 exec しなきゃいけないんだろうけど。
うーむ。
0045名無しさん@お腹いっぱい。01/12/13 23:09ID:???
>>44
別portで別uidのapacheを動かしておいて、
ProxyPass /path/to/vdir/ http://localhost:port/hogehoge/
ProxyPassReverse /path/to/vdir/ http://localhost:port/hogehoge/
みたいな感じでメインのapacheの一部に見えるようにするってのはどうよ。
0046名無しさん@お腹いっぱい。01/12/16 22:54ID:???
#!/usr/bin/perl
use CGI;
$q = new CGI;
print $q->header;
print "Hello, world\n";
をCGI、Apache::Registry、Apache::PerlRunで動かしてab -c10 -n1000してみた。
環境はPentium II 400MHz、メモリ512MB、FreeBSD 4.4-STABLE。

CGI
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 7 67.3 0 1181
Processing: 171 1735 429.2 1738 3010
Waiting: 166 1729 430.0 1733 3005
Total: 171 1742 430.7 1745 3130

Apache::Registry
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 18 11.0 18 133
Processing: 24 25 11.9 25 144
Waiting: 5 21 11.5 20 139
Total: 33 44 10.6 43 148

Apache::PerlRun
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 1 16 12.8 15 197
Processing: 28 35 45.2 30 1006
Waiting: 4 30 44.4 26 986
Total: 28 51 46.0 46 1033

たしかにApache::Registryの方が速いけど、CGIに比べればApache::PerlRunも
かなり速い。BEGINブロックへの追い出しをきっちりやっていけばApache::Registry
とApache::PerlRunとの差は開くだろうけどね。
0047名無しさん@お腹いっぱい。01/12/16 23:01ID:???
ちなみに、
main() { printf("Content-Type: text/html\n\n"); printf("Hello, world\n") }
をコンパイルしたCGIだと
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 4 13.2 0 90
Processing: 10 105 345.4 11 2729
Waiting: 0 100 345.2 10 2725
Total: 10 110 346.3 11 2729

PHP 4.0.6で <?php echo("Hello, world\n"); ?> だと
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 15 6.2 15 36
Processing: 12 20 10.6 19 290
Waiting: 5 17 10.5 16 286
Total: 30 35 8.5 34 293

もちろん、これは初期化にかかる時間を計測しているようなものなので、
実際のスクリプトでは違った結果が出ると思う。
(それにしてもCGIでperlを動かすのは遅すぎ)
0048名無しさん@お腹いっぱい。01/12/16 23:19ID:???
Apache::PerlRunの結果が違ってた。本当は↓。欝氏。
Connnection Times (ms)
min mean[+/-sd] median max
Connect: 0 21 29.2 10 229
Processing: 8 101 295.4 42 3759
Waiting: 0 92 293.3 33 3703
Total: 8 122 295.5 80 3790
0049名無しさん@お腹いっぱい。01/12/17 00:18ID:fVST7IKB
>>46
うぁ、ほんと速いね。
でもなあ。suexec 出来ないのがなぁ。
一般ユーザで気軽にディレクトリ掘ったりできないのがちょっと。
FastCGI とかどうなんだろ。
入れてみっか。
0050 01/12/18 22:35ID:???
厨質で悪いんですが、mod_perlってan httpdでも使えるんですか?
0051名無しさん@お腹いっぱい。01/12/19 00:04ID:???
>>50
mod_perlはApacheのモジュールなので、対応しません。
0052名無しさん@お腹いっぱい。01/12/19 01:40ID:JMF99QDd
どうしても suexec したいんで、SpeedyCGI にしました。
mod_perl と普通の CGI の速度比が 100:1 だとすると、
SpeedyCG : 普通のCGI は 50:1 ってかんじかなぁ。

一行目の書換えで動くかとおもったけど、やっぱ多少のスクリプトの修正が必要だった。
行儀よくしろってか...
0053名無しさん@お腹いっぱい。01/12/19 04:30ID:???
前にこの板のどこか(たぶん)で読んだんだけど
別ユーザ+別ポートでもう一つApache動かして
本体側にAliasするってのが有った。
現実的かどうかは分からんけど、結構面白そうだよね。
0054名無しさん@お腹いっぱい。01/12/19 04:32ID:???
と思ったら45に書いてるじゃん (鬱
逝ってくる。。。
0055名無しさん@お腹いっぱい。01/12/19 19:43ID:tRuF1VkQ
>>53
うーん。やりすぎって感じがしないでもない。
ちゅうか、それだったら、Apache 立ち上げないで
必要最低限の HTTP を解釈する独自デーモンでも書いたほうがいいような。
0056名無しさん@お腹いっぱい。01/12/19 21:58ID:xcH3mu33
>>55
そうかなあ。
mod_perl環境の場合、前段にHTTPアクセラレータを
置くのは割と一般的だと思うんだけど。

こいつで振り分ければ良い訳だから
案外現実的な解かも...と思った。
0057名無しさん@お腹いっぱい。01/12/20 05:12ID:RDMFULhn
>>56
HTTPアクセラレータがなんだかわかってないDEATH。

一般的な mod_perl 環境ってどんなのなんでしょう。
普通はあれですよね。サイト全体の為のスクリプトをmod_perlで動かしたりするんですよね。
0058名無しさん@お腹いっぱい。01/12/20 12:24ID:tX1BaRx6
mod_perlって、httpdが太るじゃないですか。

画像とか静的なHTMLを出力するために、こんな大きなhttpdを
使うのは無駄なので、squidみたいなproxyを前段におくことが
あります。これがHTTPアクセラレータ。

同じマシンの中で両方するなら、
squid : port 80
mod_perl: port 8080
みたいな感じ。
0059名無しさん@お腹いっぱい。01/12/20 12:27ID:sKSPgKeT
>>57
squid等、キャッシュサーバーをwebサーバーの入り口において、
サーバーの負荷を軽くする技術です。
mod_perl組み込むと、httpdの実行イメージが肥大するので、
画像や、html等はmod_perlのhttpdでサービスするのは無駄です。
そのため、
動的ページ→mod_perl
静的ページ→軽量apache、mathopdやboa,thttpd等
と振り分けると理論上はパフォーマンスが向上するはずです。
perl.apache.orgにも、この手法が公開されてます。
私も実際に試しましたが、squidのオーバーヘッドが結構でかいのと、
squidのキャッシュコントロールの設定が難しかったので、
やめました。
ただ、セキュリティの点で導入するのならメリットあると思います。
色々やった末、軽量apache+speedycgiが、もっとも
確実で、パフォーマンスがいいと思いました。
0060名無しさん@お腹いっぱい。01/12/20 12:53ID:???
>>58-59
ケコ-ン!
0061名無しさん@お腹いっぱい。01/12/21 07:03ID:jk5ftRfj
>>58,59
色々勉強になりました。
とりあえず、perl.apache.org を読んでみます。
ありがとうです。
0062名無しさん@お腹いっぱい。01/12/21 11:04ID:vI34GlQ7
squid httpdアクセラレーターを語ろう
http://pc.2ch.net/test/read.cgi/php/998166103/
0063名無しさん@お腹いっぱい。01/12/21 16:25ID:kuKW9GTl
mod_perl環境でもプロセスIDはPerl/CGI呼び出す度に変わりますか?
0064名無しさん@お腹いっぱい。01/12/21 22:19ID:IUk0HPIs
cgiを止めてPHPオンリーってのはダメ?
0065名無しさん@お腹いっぱい。01/12/21 22:41ID:vI34GlQ7
>>63
プロセスIDはApacheのプロセス毎についてますが...?
#外してるよな...

>>64
好みの問題でしょう。ちなみにmod_perl環境ではperlでCGIを使う意味が
あまりありません。もしかして誤爆ですか?
00666301/12/21 23:00ID:???
>>65
今テンポラリファイル名に$PID使ってるので,mod_perlでもちゃんと動くかなぁと思って聞きました。
よく考えるとperlがhttpdになるだけなので だいじょうぶそうですね。
ありがとうございました。
0067名無しさん@お腹いっぱい。01/12/22 02:08ID:???
>>66
$PID使うよりも$UNIQUE_ID使った方が安全と思われ。
将来mod_perlが同一プロセス、複数スレッドで動くようにもなった場合はまるかもよ。
0068名無しさん@お腹いっぱい。02/01/02 14:28ID:z//VSzFn
Apache::Registry環境でPATH_INFOを使っていないときに
$ENV{'PATH_INFO'}を参照したら前回のPATH_INFOが
残ったままになってるんですが回避の方法って無いんですかね?
0069名無しさん@お腹いっぱい。02/01/02 20:06ID:???
>>68
手元の環境で試してみたところ、$ENV{'PATH_INFO'} はちゃんとクリアされて
たよ。PID が変わってないことも確認した。

とは言え、実際そっちではそうなってるんだろうから、当面の回避策としては
REQUEST_URI と SCRIPT_NAME を使って本当に自分が PATH_INFO 付きで呼ばれ
たのかを確認するしかないかな。
0070名無しさん@お腹いっぱい。02/01/05 21:34ID:LDyBbo+H
スイマセン、質問いいすかー?
とりあえず、mod_perl-1.26は動いてるんですけど、気になることが。

perl Makefile.PL USE_APXS=1 WITH_APX=/path/to/bin/apxs EVERYTHING=1

でMakefileつくってmakeの後、make testしたとき、
Can't make test with APXS (yet)
って出るけど、これはこれで問題ナシなんでしょーか。

Makefileのソースみてもこれしか
出ないようになってるからいいんだろうが・・・。

INSTALL.apaciに明記してある手順、
=head2 Build mod_perl as DSO outside Apache source tree via APXS
ではmake testも入ってるけど
実質的には意味のないステップなの?

気になります。だれか教えて。長くてスマソ。
0071名無しさん@お腹いっぱい。02/01/10 14:07ID:???
age
0072名無しさん@お腹いっぱい。02/01/12 03:23ID:9iEYLiJr
あげてみよう。
0073名無しさん@お腹いっぱい。02/01/25 00:51ID:???
おお、ためになった。
0074ほげ02/01/25 00:56ID:jfCY728M
おお、だめになった。
0075名無しさん@お腹いっぱい。02/02/01 01:56ID:???
運用が難しい(一般的にあまり利用されていない)
→KENTさんの技術力でカバー
http://kent.parks.jp/over3.html

YYボードも動きますか?
0076名無しさん@お腹いっぱい。02/02/01 13:01ID:???
>>75
>>32-35 辺り参照。
0077名無しさん@お腹いっぱい。02/02/01 16:37ID:uE2BC2dR
他スレでも出てたけど
mod_perl vs PHP + Zend Optimizer
ではどっちが早いの?
すげー気になる。
0078名無しさん@お腹いっぱい。02/02/01 22:22ID:???
http://kent.parks.jp/over3.html
>「mod_perl」とは、WEBサーバーでCGIを高速に動かすためのツールです。
さすがKENT (爆)
0079名無しさん@お腹いっぱい。02/02/03 21:19ID:nVjpXt8Y
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer mod_perl vs PHP + Zend Optimizer
0080名無しさん@お腹いっぱい。02/02/03 22:20ID:???
>79
マルチは感心しないな。
0081Redhater02/02/04 02:40ID:r5AiMbOu
mod_perlを使いつつ、suexecすることってできるんですか?
いろいろやってみたのですができません・・・。

http://www.goodbreeze.com/
0082名無しさん@お腹いっぱい。02/02/04 02:48ID:???
>>81
できない。
0083名無しさん@お腹いっぱい。02/02/09 23:28ID:???
mod_perlの事を知りたく思っています。
借りてるサーバーでmod_perlが使えるそうなので、軽くなるならと思い
色々調べはじめました。
ところがgoogleでmod_perlの事を検索したのですが、検索キーワードが
良くないのかmod_perlのインストールの方法とかばかりが引っかかり、
実際にコーディングをどうすればいいとか具体的な利用法とかの
載っているページが見つかりませんでした。
もしどなたか詳しく説明をされているサイトをご存知でしたら、
教えていただけないでしょうか?
よろしくお願いします。
0084名無しさん@お腹いっぱい。02/02/09 23:44ID:7ll9Q9qB
>83
-w付けて,use strictして,
グローバル変数はなるべく使わないようにして,
もし使う時も初期化をきちんとやる,
とかかなぁ。
漏れも知りたいのであげ
0085名無しさん@お腹いっぱい。02/02/09 23:49ID:WSZ5EavI
>>83
>>11-19
0086名無しさん@お腹いっぱい。02/02/10 07:55ID:???
何か適当にメールサーバ動かしてるけど、コードはそれほど変わらないよ
強いて言うなら、Packageの修飾をちゃんとする事とパイプ何かの
後片付けを忘れない事位かなぁ・・・・
漏れの書いたの見ると意識的に初期化する様なコードになってた
$scalar = ''; @ary = (); とか

あ、正規表現のoスイッチも駄目だったかも
0087名無しさん@お腹いっぱい。02/02/10 11:55ID:TL971BdT
うーむ、わかんねぇ。

たとえば、helloworldを表示するスクリプトを
mod_perlで動かすにはどうすんの?
00888302/02/10 12:56ID:TkkSs6mB
>87
自分もそれを聞きたいです。
それの説明されているサイトの紹介でも良いのでどなたかお願いします。

その後に>11-19を参考にさせてもらおうと思います。
0089名無しさん@お腹いっぱい。02/02/10 14:32ID:GSOYlDJs
基本的には、>>84で問題ないが、
mod_perlでは、
my() scoped variable in nested subroutines
という特殊な問題があるので注意。

http://perl.apache.org/
http://perl.apache.org/guide/
http://perl.apache.org/dist/cgi_to_mod_perl.html
http://perl.apache.org/dist/mod_perl_traps.html
は必読。
日本語ドキュメントは期待しても駄目よ。
0090名無しさん@お腹いっぱい。02/02/11 00:46ID:???
>>89
そこの中なら、
CGI to mod_perl Porting. mod_perl Coding guidelines.
http://perl.apache.org/guide/porting.html
見れば良いんでないの。
0091名無しさん@お腹いっぱい。02/02/11 21:03ID:???
あと、これが有るな。早く日本語版ホスィ
mod_perl Pocket Reference
http://www.oreilly.com/catalog/modperlpr/
0092名無しさん@お腹いっぱい。02/02/23 22:36ID:???
質問です。
以下はSocketを使って2ちゃんのトップページを表示する
簡単なCGIスクリプトですが、mod_perl経由だと動いてくれません。
mod_perlが動くことは確認したのですが、Socketを使うとなると
どうしても正常に動いてくれません。何か良いお知恵を・・・。
-----
use Socket;
socket('SOCK',PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect('SOCK',sockaddr_in(80,inet_aton('2ch.net')));
select((select(SOCK),$|=1)[0]);
print SOCK "GET http://2ch.net/ HTTP/1.0\r\n\r\n";
print "Content-type: text/html\n\n";
print <SOCK>;

# Apache/1.3.23 (Win32) mod_perl/1.26_01-dev
0093名無しさん@お腹いっぱい。02/02/23 22:48ID:???
私的にはIO::Socketのほうが好き。
0094名無しさん@お腹いっぱい。02/02/23 23:31ID:???
>>92
なんかおかしくないか?
GET / HTTP/1.0
じゃないの?
00959202/02/23 23:45ID:???
>>93
タイムアウトとかあってよさげです。
今度、使ってみようかと思います。
>>94
そうですね。正しくは
print SOCK "GET / HTTP/1.0\r\n";
print SOCK "Host: 2ch.net\r\n\r\n";
ですね。お手数かけてすいません。

いずれにせよ動いてくれませんが・・・。
0096名無しさん@お腹いっぱい。02/02/24 02:12ID:1IBSQesy
>>92
use strict;
perl -wで動かして、apacheのログ見てみてんさい
0097名無しさん@お腹いっぱい。02/02/24 02:19ID:???
素直にLWP。
0098”管理”者02/02/24 04:08ID:???
テスト書込み1
00999202/02/24 08:13ID:???
>>97
LWPを使ってみたら動きました。
SocketやIO::Socketだと動かず、LWPだと動くのは何故だかわかりませんが...

いろいろとありがとうございました。
-----
use LWP::Simple;
print "Content-type: text/html\n\n";
getprint 'http://2ch.net/';
0100ひろゆ子@暫定管&lre;直人02/02/24 18:18ID:???
>98
せめてこのくらいやって下さいですです。。。
0101ひろゆ子@暫定管&lre;理人02/02/24 18:19ID:???
なんのテストしたかったんだろう?100げとしちゃった、てへ。
■ このスレッドは過去ログ倉庫に格納されています