1 :
名無しさん :
01/11/07 17:42 ID:+Gux2iOQ CGIを激速で実行できるmod_perlについて語りませう。 関連リンク等は>2
2 :
1 :01/11/07 17:42 ID:???
名スレの予感
4 :
1 :01/11/07 17:52 ID:???
最近導入したのですがうまく動いてくれないで困りました。 use strict;はもちろんしてるし、変数の初期化もちゃんとしてて、それでも 動かないから、残っていたグローバル変数も必死(涙 で排除して、 それでも動かないのでよくよくmod_perl_trapsを読むと、「package宣言を していないファイルをrequireするな」のようなことが書いてあってそれで なんとか解決しました。html表示用のスクリプト(ヒアドキュメントで 書き出すだけの)をrequireしていたのですが、全部print_htmlという サブルーチン名にしていて、それが原因でした。
5 :
1 :01/11/07 17:54 ID:???
ところで「グローバル変数は使っちゃだめ」みたいなことはよく言われますが、 環境変数($ENV{...})とかは大丈夫なのかな? ↑実はこれがスレ立てた動機だったりして(笑) 誰か教えて〜
mod_perl MLって終わってるの? w 取り合えずFAQは.... 正規表現の'o'はダメ 名前空間が変わる、Packageで修飾 exit(0); $hoge = ''; でクリア こんな感じ?
$main::ENV{'HTTP_HOGE'}
8 :
名無しさん@お腹いっぱい。 :01/11/08 00:54 ID:uKgtvIlV
>>5 %ENVはリクエスト毎にセットしなおされる。
だから、大丈夫だと思う。
といってもApache::Regstryなコードの話ね(あたりまえ)
9 :
8 :01/11/08 00:55 ID:???
う。 Apache::Registryだ。
コンパイル繋がりでPerlccとかも良い? FastCGIとかSpeedyとかも :-) perlccはB::Cは殆ど速くならないね、ファイルは50KB位のが 800KBとかになった B::CCに期待したいんだけどこっちは殆どharnessでこけるか ポインタ周りでヲーニング出て無理やり実行したらコア、って感じ 面白いんだけどあの凶悪なヘッダは追う気にならなかった・・・
つれづれなるままに、cgi_to_mod_perlの翻訳でも。
[名前]
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 >
ということです。
こうすると、指定した場所の下にあるファイル(あなたのファイルシステムで /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>
'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";
もしCGI.pmを使っていて'print $q->header'としているなら、PerlSendHeaderは 必要「ありません」。 [NPHスクリプト] 'nph'CGIスクリプトを実行したいなら、コードにこれを追加してください: local $| = 1; 普段 PerlSendHeader を On にしているなら、httpd.confにこれを追加してください: <Files */nph-*> PerlSendHeader Off </Files>
[プログラミング作法] CGIはだらしないプログラミングを許してくれますが、mod_perlは違います。 なぜでしょうか? CGIスクリプトの一生はは一回のHTTPリクエストで終わりますし、 それぞれ独立したプロセスです。リクエストが終わればプロセスはなくなり、 グローバル変数や開けっ放しのファイルなど、なにもかもきれいに片付けて もらえます。しかしmod_perlで走るスクリプトはもっと長い生涯を送ります。 何回ものリクエストの間に、一つのプロセスでいくつものスクリプトが処理されます。 つまり、自分で後片付けをする必要があるのです。耳にされていると思いますが: 必ず'use strict'と'-w'オプションを使うこと!
このことはmod_perlでのPerlでは他のどんな環境での場合よりも重要です。 必要ではありませんが、「強く」推奨されています。それに長い目で見ると 時間の節約にもなります。 スクリプトをきれいに書いておいて損はないですよ! [落とし穴] mod_perl_traps参照
ふ〜時間かかっちゃった。(もうあったりして・・・日本語訳) mod_perl_trapsは後ほど。 他にやってくれる人がいたらお任せします〜
19 :
名無しさん@お腹いっぱい。 :01/11/09 02:11 ID:S+GQdZO0
自分のSUN Cobalt RaQ4の環境変数見てみると、 mod_perlとあります。これはもうmod_perlが入っているってことなんでしょうか?
mod_perlを入れると $ENV{SERVER_SOFTWARE} に'mod_perl'が追加され, $ENV{GATEWAY_INTERFACE} が 'CGI-Perl/1.1' になって $ENV{mod_perl}が設定されるらしい。 iswebはSERVER_SOFTWAREしか変わってない。
21 :
名無しさん@お腹いっぱい。 :01/11/09 08:55 ID: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
>>10 バイトコードじゃ殆ど意味ないねえ...
俺もCCは殆ど使ってないよ
関係無いけど、某無料サーバ(perl他一切無し)にバイナリ上げてhtaccessで
ExecCGIオーバーライドしたらバイトコードが動いた (w
ネストしたサブルーチンはトラップしにくい おいらは、speedyCGIのほうが好き。 実際mod_perlはリソース食いすぎ
25 :
名無しさん@お腹いっぱい。 :01/11/10 18:55 ID:QgGGhVTZ
厨な質問なんですが、 PerlCGIで使っていたスクリプトを、そのままmod_perlで動かした場合はどれくらい速くなるものなのですか? どんな種類のスクリプトに効果的なのかも分かりません。 宜しければ教えていただけないでしょうか?
>>どれくらい速くなるものなのですか 解らんけど所詮バイトコード並、PerlはPerlだから、4.5倍なんじゃ無いの? >>どんな種類のスクリプト 呼ばれれば呼ばれる程効果が有る、勝手に永久常駐して自分でリクエスト捌くようなのだと 全く意味無し。 つーかroot持って無いと使えないんだけど、その辺はOK?
27 :
25 :01/11/10 21:21 ID:???
>>26 回答ありがとうございました。
例えばWebチャットの場合は効果がありそうですね。
mod_perlが組み込まれている無料サーバ(珍しいけど)がありますので(^^;;;
Xreaか・・・ チャット置いてレン鯖板で晒されないようにな w
29 :
25 :01/11/10 23:07 ID:???
>>28 いえ、設置を考えてるのは掲示板なので、普通に使っても問題ないと思います。
でも共有サーバですし、少しでも負荷を削減できないかと、mod_perlの利用を考えました。
お気遣いありがとうございます(^^;
31 :
名無しさん@お腹いっぱい。 :01/12/03 01:28 ID:VLJw8Nzl
保守age
1ch.tvではグローバル変数つかいまくりでも、mod_perlしてました。 先生、mod_perlって別に難しくないんですね!age
デキネーヨ 名前空間グチャグチャで動く訳ネーダロ -_-...
34 :
名無しさん@お腹いっぱい。 :01/12/10 00:26 ID:ko+ATGtx
mod_perlなんて使うよりPHP勉強しろ。 もうPerlが滅びるのも時間の問題なのだから。
>>33 Apache::PerlRunなら動くでしょーよ。へたれだけど。
36 :
名無しさん@お腹いっぱい。 :01/12/10 14:22 ID:u4VetMyU
>>35 ああそっか、使った事無いから>Apache::PerlRun
これだと殆ど意味ないよね? >毎回コンパイル
実験する価値はあるかにゃ・・・
Perl自体をexec()しない分、CGIと比べると割と軽くなるYO! CGIをそのまま使える場合も多いから、性能と開発コストを天秤にかければ、 十分ペイする場合も多いような。
39 :
名無しさん@お腹いっぱい。 :01/12/11 14:24 ID:QvfYRs1F
Apache/1.3.22 (Win32)にmod_perl入れようということで ソース落としてきたんですけど、makefile.pl実行してもmod_perl.makはみつからないし makefileはnmakeで通らないしと、なんかおかしいです なんかファイル足らんのかなぁ? つーかWin32バイナリってどっかにないですかね?
なるほど、ちょっと解説サイトを色々見てみたけど mod_perlという代物はそれほど難しいというわけでもなさそうだ。
41 :
名無しさん@お腹いっぱい。 :01/12/11 15:17 ID:ebIAeWdW
42 :
名無しさん@お腹いっぱい。 :01/12/11 20:43 ID:ebIAeWdW
>>40 既存のスクリプトをPerlRunやApacheRegistryで動かす分には
殆ど変更は必要ない。
だけど、やっぱApache::*なモジュールをつくるのが
面白いYo!
43 :
名無しさん@お腹いっぱい。 :01/12/11 21:46 ID:ORPF/X5f
44 :
のーとりあすびっぐ :01/12/13 20:30 ID:BEbOFXi+
suexec が使える mod_perl みたいなのってないですかね。 suexec っていうぐらいだから 毎回 exec しなきゃいけないんだろうけど。 うーむ。
#!/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との差は開くだろうけどね。
ちなみに、 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を動かすのは遅すぎ)
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
49 :
名無しさん@お腹いっぱい。 :01/12/17 00:18 ID:fVST7IKB
>>46 うぁ、ほんと速いね。
でもなあ。suexec 出来ないのがなぁ。
一般ユーザで気軽にディレクトリ掘ったりできないのがちょっと。
FastCGI とかどうなんだろ。
入れてみっか。
50 :
:01/12/18 22:35 ID:???
厨質で悪いんですが、mod_perlってan httpdでも使えるんですか?
>>50 mod_perlはApacheのモジュールなので、対応しません。
52 :
名無しさん@お腹いっぱい。 :01/12/19 01:40 ID:JMF99QDd
どうしても suexec したいんで、SpeedyCGI にしました。 mod_perl と普通の CGI の速度比が 100:1 だとすると、 SpeedyCG : 普通のCGI は 50:1 ってかんじかなぁ。 一行目の書換えで動くかとおもったけど、やっぱ多少のスクリプトの修正が必要だった。 行儀よくしろってか...
前にこの板のどこか(たぶん)で読んだんだけど 別ユーザ+別ポートでもう一つApache動かして 本体側にAliasするってのが有った。 現実的かどうかは分からんけど、結構面白そうだよね。
と思ったら45に書いてるじゃん (鬱 逝ってくる。。。
55 :
名無しさん@お腹いっぱい。 :01/12/19 19:43 ID:tRuF1VkQ
>>53 うーん。やりすぎって感じがしないでもない。
ちゅうか、それだったら、Apache 立ち上げないで
必要最低限の HTTP を解釈する独自デーモンでも書いたほうがいいような。
56 :
名無しさん@お腹いっぱい。 :01/12/19 21:58 ID:xcH3mu33
>>55 そうかなあ。
mod_perl環境の場合、前段にHTTPアクセラレータを
置くのは割と一般的だと思うんだけど。
こいつで振り分ければ良い訳だから
案外現実的な解かも...と思った。
57 :
名無しさん@お腹いっぱい。 :01/12/20 05:12 ID:RDMFULhn
>>56 HTTPアクセラレータがなんだかわかってないDEATH。
一般的な mod_perl 環境ってどんなのなんでしょう。
普通はあれですよね。サイト全体の為のスクリプトをmod_perlで動かしたりするんですよね。
58 :
名無しさん@お腹いっぱい。 :01/12/20 12:24 ID:tX1BaRx6
mod_perlって、httpdが太るじゃないですか。 画像とか静的なHTMLを出力するために、こんな大きなhttpdを 使うのは無駄なので、squidみたいなproxyを前段におくことが あります。これがHTTPアクセラレータ。 同じマシンの中で両方するなら、 squid : port 80 mod_perl: port 8080 みたいな感じ。
59 :
名無しさん@お腹いっぱい。 :01/12/20 12:27 ID:sKSPgKeT
>>57 squid等、キャッシュサーバーをwebサーバーの入り口において、
サーバーの負荷を軽くする技術です。
mod_perl組み込むと、httpdの実行イメージが肥大するので、
画像や、html等はmod_perlのhttpdでサービスするのは無駄です。
そのため、
動的ページ→mod_perl
静的ページ→軽量apache、mathopdやboa,thttpd等
と振り分けると理論上はパフォーマンスが向上するはずです。
perl.apache.orgにも、この手法が公開されてます。
私も実際に試しましたが、squidのオーバーヘッドが結構でかいのと、
squidのキャッシュコントロールの設定が難しかったので、
やめました。
ただ、セキュリティの点で導入するのならメリットあると思います。
色々やった末、軽量apache+speedycgiが、もっとも
確実で、パフォーマンスがいいと思いました。
61 :
名無しさん@お腹いっぱい。 :01/12/21 07:03 ID:jk5ftRfj
>>58 ,59
色々勉強になりました。
とりあえず、perl.apache.org を読んでみます。
ありがとうです。
62 :
名無しさん@お腹いっぱい。 :01/12/21 11:04 ID:vI34GlQ7
63 :
名無しさん@お腹いっぱい。 :01/12/21 16:25 ID:kuKW9GTl
mod_perl環境でもプロセスIDはPerl/CGI呼び出す度に変わりますか?
64 :
名無しさん@お腹いっぱい。 :01/12/21 22:19 ID:IUk0HPIs
cgiを止めてPHPオンリーってのはダメ?
65 :
名無しさん@お腹いっぱい。 :01/12/21 22:41 ID:vI34GlQ7
>>63 プロセスIDはApacheのプロセス毎についてますが...?
#外してるよな...
>>64 好みの問題でしょう。ちなみにmod_perl環境ではperlでCGIを使う意味が
あまりありません。もしかして誤爆ですか?
66 :
63 :01/12/21 23:00 ID:???
>>65 今テンポラリファイル名に$PID使ってるので,mod_perlでもちゃんと動くかなぁと思って聞きました。
よく考えるとperlがhttpdになるだけなので だいじょうぶそうですね。
ありがとうございました。
>>66 $PID使うよりも$UNIQUE_ID使った方が安全と思われ。
将来mod_perlが同一プロセス、複数スレッドで動くようにもなった場合はまるかもよ。
68 :
名無しさん@お腹いっぱい。 :02/01/02 14:28 ID:z//VSzFn
Apache::Registry環境でPATH_INFOを使っていないときに $ENV{'PATH_INFO'}を参照したら前回のPATH_INFOが 残ったままになってるんですが回避の方法って無いんですかね?
>>68 手元の環境で試してみたところ、$ENV{'PATH_INFO'} はちゃんとクリアされて
たよ。PID が変わってないことも確認した。
とは言え、実際そっちではそうなってるんだろうから、当面の回避策としては
REQUEST_URI と SCRIPT_NAME を使って本当に自分が PATH_INFO 付きで呼ばれ
たのかを確認するしかないかな。
70 :
名無しさん@お腹いっぱい。 :02/01/05 21:34 ID: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も入ってるけど 実質的には意味のないステップなの? 気になります。だれか教えて。長くてスマソ。
age
72 :
名無しさん@お腹いっぱい。 :02/01/12 03:23 ID:9iEYLiJr
あげてみよう。
おお、ためになった。
74 :
ほげ :02/01/25 00:56 ID:jfCY728M
おお、だめになった。
77 :
名無しさん@お腹いっぱい。 :02/02/01 16:37 ID:uE2BC2dR
他スレでも出てたけど mod_perl vs PHP + Zend Optimizer ではどっちが早いの? すげー気になる。
79 :
名無しさん@お腹いっぱい。 :02/02/03 21:19 ID: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
>79 マルチは感心しないな。
81 :
Redhater :02/02/04 02:40 ID:r5AiMbOu
mod_perlの事を知りたく思っています。 借りてるサーバーでmod_perlが使えるそうなので、軽くなるならと思い 色々調べはじめました。 ところがgoogleでmod_perlの事を検索したのですが、検索キーワードが 良くないのかmod_perlのインストールの方法とかばかりが引っかかり、 実際にコーディングをどうすればいいとか具体的な利用法とかの 載っているページが見つかりませんでした。 もしどなたか詳しく説明をされているサイトをご存知でしたら、 教えていただけないでしょうか? よろしくお願いします。
84 :
名無しさん@お腹いっぱい。 :02/02/09 23:44 ID:7ll9Q9qB
>83 -w付けて,use strictして, グローバル変数はなるべく使わないようにして, もし使う時も初期化をきちんとやる, とかかなぁ。 漏れも知りたいのであげ
85 :
名無しさん@お腹いっぱい。 :02/02/09 23:49 ID:WSZ5EavI
何か適当にメールサーバ動かしてるけど、コードはそれほど変わらないよ 強いて言うなら、Packageの修飾をちゃんとする事とパイプ何かの 後片付けを忘れない事位かなぁ・・・・ 漏れの書いたの見ると意識的に初期化する様なコードになってた $scalar = ''; @ary = (); とか あ、正規表現のoスイッチも駄目だったかも
87 :
名無しさん@お腹いっぱい。 :02/02/10 11:55 ID:TL971BdT
うーむ、わかんねぇ。 たとえば、helloworldを表示するスクリプトを mod_perlで動かすにはどうすんの?
88 :
83 :02/02/10 12:56 ID:TkkSs6mB
>87 自分もそれを聞きたいです。 それの説明されているサイトの紹介でも良いのでどなたかお願いします。 その後に>11-19を参考にさせてもらおうと思います。
89 :
名無しさん@お腹いっぱい。 :02/02/10 14:32 ID:GSOYlDJs
質問です。
以下は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
私的にはIO::Socketのほうが好き。
>>92 なんかおかしくないか?
GET / HTTP/1.0
じゃないの?
95 :
92 :02/02/23 23:45 ID:???
>>93 タイムアウトとかあってよさげです。
今度、使ってみようかと思います。
>>94 そうですね。正しくは
print SOCK "GET / HTTP/1.0\r\n";
print SOCK "Host: 2ch.net\r\n\r\n";
ですね。お手数かけてすいません。
いずれにせよ動いてくれませんが・・・。
96 :
名無しさん@お腹いっぱい。 :02/02/24 02:12 ID:1IBSQesy
>>92 use strict;
perl -wで動かして、apacheのログ見てみてんさい
素直にLWP。
テスト書込み1
99 :
92 :02/02/24 08:13 ID:???
>>97 LWPを使ってみたら動きました。
SocketやIO::Socketだと動かず、LWPだと動くのは何故だかわかりませんが...
いろいろとありがとうございました。
-----
use LWP::Simple;
print "Content-type: text/html\n\n";
getprint '
http://2ch.net/ ';
>98 せめてこのくらいやって下さいですです。。。
なんのテストしたかったんだろう?100げとしちゃった、てへ。
厨房丸だし
103 :
名無しさん@お腹いっぱい。 :02/02/28 20:41 ID:9QfD2oaF
104 :
nobodyさん :02/03/03 02:09 ID:Z7la6eJB
105 :
fight :02/03/03 10:10 ID:sYgoE6A5
>>105 いきなりwindowが開いてウザイ。板違い。宣伝氏ね。
107 :
なぁ。 :02/03/06 17:06 ID:R30flEyT
apache_1.3.23 and mod_perl-1.26 でmake testがとおらないーー! Can't locate object method "new" via package "URI::URL" at ../blib/lib/Apache/te st.pm line 252. だと。 なんか、調べるとLWP::UserAgent.pmにパッチを当てろとか書いてあるけど、 ../blib/lib/Apache/test.pm に当ててるわけでないから、意味ないきがするんだよね。 どうしたらよい? テストが通らないくらい、無視してよいですか?
108 :
nobodyさん :02/03/06 18:29 ID:xRtVgBJD
>>107 モジュール類古くない?
とりあえずアップデートしてみたらどう?
perl -MCPAN -e '@mod = CPAN::Shell->r; CPAN::Shell->install(@mod)'
苦労してmod_perlなんて使うぐらいなら CでCGI組めばいいじゃん。
C/CGIより速いからじゃない?
>> 110 そだね。CGI屋には馴染めない部分があるかもしれないけど、 Perl屋には普通のことばっかだし。
mod_perlとmod_phpだとどっちが速いの?
114 :
nobodyさん :02/03/07 21:41 ID:572QyWU+
PHPって大した事ないんだね。
Apache::ASP使ってみた。 いい感じだけど、エディテングで発狂。 ASPとかJSPな人、どんなエディタ使ってんの?
俺的には、HTMLに埋め込むのはHTML::Template程度が限界。
118 :
115 :02/03/08 01:18 ID:???
さんきゅ、見てみる。 ASPというより、perl scriptのヒアドキュメントの中に埋め込みたいのだけど…
Apache::Registryを使用するためのconfigファイルの典型的なエントリ Alias /perl/ /usr/local/apache/perl <Location /perl> SetHandler perl-script PerlHandler Apache::Registry PerlSendHeader On Options +ExecCGI </Location>
スクリプトを標準のCGIで実行するつもりがないなら、いくつかの 関数を、それらに対応するApache::関数で置き換えることで、若干 パフォーマンスを高め、メモリを大幅に節約することが出来る。 IO::File --> Apache::File CGI::escape --> Apache::Util::escape_uri CGI::unescape --> Apache::Util::unescape_uri CGI::escapeHTML --> Apache::Util::escape_html POSIX::strftime --> Apache::Util::ht_time
Alias /perl "C:/www/http/home/mod_perl/" <Directory "C:/www/http/home/mod_perl/"> SetHandler perl-script # PerlHandler Apache::Registry PerlInitHandler Apache::StatINC AllowOverride All Options +ExecCGI Indexes Order allow,deny Allow from all </Directory> こういう風にやって、上のコメントアウトを外すとディレクトリーが404になってしまいます。 どうすれば直りますか?
mod_perl FAQ 【CGI動かねぇぞゴルァ!!】 で、どんな症状なわけ?いくつか可能性あるYO! ・File not found Apacheの設定ファイルに正しいエントリを作成したのか?mod_perl.podに書か れているように、Alias /perl/ ... と <Location /perl>... ディレクティプ をaccess.confへ追加する必要があるんだよ。そしてもちろんスクリプトはAlias ディレクティプで指定されたディレクトリの中にあって、ウェブサーバを実行 するユーザーが、読み込みと実行が可能でないとイヤン。 ・Forbidden てめーはこのサーバの/perl/fooにアクセスする許可を持ってねーよ。(プ chmod 755 /path/to/my/mod_perl/scripts chmod 755 /path/to/my/mod_perl/scripts/foo ・Internal Server Error このスクリプトは実行時エラーで逝ってしまった。サーバーのerror.logの中に エラーメッセージがあるからさ、それ読めばなんでそうなったか分かるっての。 そうそう、CGI.pmを使っているなら、スクリプトをシェルプロンプトで走らせち まえば、何が起こるのか分かるかもしれん。 error.logにスクリプトの構文エラーだぞゴルァ!!って書いてあんのに、 perl -c /path/to/my/mod_perl/scripts/foo だと全然オッケーな時は、__END__ や __DATA__が使ってるのが悪いんちゃうんか と。ゴメソ、mod_perlのApache::Registryはそいつら使えへんねん。
124 :
あわてもの :02/04/14 10:08 ID:4YBd0gTm
Apache2.0.35+ActivePerl5.6.1.631(mod_perl1.99_02-dev) をインストールしてみましたがhttpd.confの設定が変わっているようで LoadModule perl_module modules/mod_perl.so は記述するのですが、Apache1.3.24の場合のような AddModule mod_perl.c や #!D:/ActivePerl/561/bin/perl.exe の記述は必要ないようです。 httpd.confに ScriptAlias /mod-perl/ "D:/Apache2/mod-perl/" <Directory "D:/Apache2/mod-perl"> SetHandler perl-script PerlHandler Apache::Registry AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory> と書いてapache2をスタート。一応ApacheServiceMonitorでは正常に 動いてるようです。 ところがブラウザからCGIを動かしてみるとmod_perlのディレクトリ構成も変わっているようで PerlHandler Apache::Registry のままでは@INCにそんなものはないと怒られます。 調べてみるとRegistry.pmは D:/ActivePerl/561/site/lib/apache2/ModPerl にあるので PerlHandler ModPerl::Registry と変えてみましたが Can't locate ModPerl/Registry.pm in @INC (@INC contains: D:/ActivePerl/561/lib D:/ActivePerl/561/site/lib .) at (eval 1) line 3. と言われてダメ。 さらに調べてみると D:/ActivePerl/561/site/lib/にApache2.pmというファイルがあって@INCに D:/ActivePerl/561/site/lib/apache2を追加する機能があるらしいと解ったので物は試しと PerlHandler Apache2 ModPerl::Registry と書き直してブラウザからCGIを動かしてみると BEGIN failed--compilation aborted at D:/ActivePerl/561/site/lib/Apache2/ModPerl/RegistryCooker.pm line 48. Compilation failed in require at D:/ActivePerl/561/site/lib/Apache2/ModPerl/Registry.pm line 11. BEGIN failed--compilation aborted at D:/ActivePerl/561/site/lib/Apache2/ModPerl/Registry.pm line 11. Compilation failed in require at (eval 2) line 3. といわれてダメでした。 Apache2.0.35+ActivePerl5.6.1.631(mod_perl1.99_02-dev)でのhttpd.confの正しい設定を誰か知りませんか?
125 :
あわてもの :02/04/21 23:11 ID:1/aZbmex
>>124 はあほな質問だったのかな?
それともこのスレ、誰も見てないのだろうか?
誰か反応してくれませんか。
Apache2.xが流行るまで辛抱辛抱。
127 :
nobody :02/04/22 02:35 ID:80pbFtvd
>>125 lib の中にApache2/ModPerl/Registry.pmがあるなら
Apache2::ModPerl::Registry
じゃねーの?
129 :
あわてもの :02/04/22 07:43 ID:wb65qKDP
>>126 励まし、ありがとうございます。
>>127 情報、ありがとうございます。
早速見に行ってきます。
>>128 ご助言、ありがとうございます。
でもすでにやってみましたがダメだったのです。
130 :
nobodyさん :02/04/24 19:09 ID:oPJvWoo3
$0と%ENVと%SIGはグローバル変数ですか。
131 :
lom :02/04/24 19:27 ID:a5s+3PHM
132 :
nobodyさん :02/04/29 00:10 ID:44EJtQiu
Apache2対応mod_perl2の情報求む。 当方httpd.confの書き方わからず難渋している。
httpd.conf: ----------- LoadModule perl_module modules/mod_perl.so Alias /perl e:/Apache2/cgi-perl PerlRequire e:\apache2\conf\startup.cgi <Location /perl> SetHandler perl-script PerlResponseHandler ModPerl::Registry Options ExecCGI PerlSendHeader On </Location> startup.pl: ----------- #! /perl/5.6.1/bin/MSWin32-x86-multi-thread/perl.exe -w use strict; use Apache2 (); use Apache::compat; and a test script: #! c:/perl/5.6.1/bin/MSWin32-x86-multi-thread/perl.exe -w use ModPerl::Registry; use CGI; $q = new CGI; print $q->header, $q->start_html(), 'Hello', $q->end_html();
メンテナンスでやんす
ここに書き込んでる奴等ってmod_perlがなんだかわかってんのかいな・・・ 軽くなる軽くなるとは言うけど、結局一番短縮できる(というかスキップ できる)のはコンパイルだけだぜ? それよかApacheの色んなハンドラーを使えるとか、そういうことのメリット のほうが大きいと思うけど。
>>136 じゃ、そういう具体的な事でも書いてってよ
>>136 Perlインタプリタをプロセスとして起動する必要が無くなる点を忘れてはいけない。
Apache::RegistryとApache::PerlRunを比べると極端に差が無いでしょ?
おお、そうかそうか。忘れてた。perl_init()(←関数名が怪しいが・・・) が各プロセスに対して一回しか呼ばれないのだよね。
>>137 うーん、例えばその成功・失敗をユーザーに報告しなくても
いいような処理の場合は$r->register_cleanup()を使うと
ユーザーにとって処理が早く終わったように思わせられるとか?
PerlTransHandlerを使うとコンテンツ又はハンドラーにアクセス
する前にURLを色々変換できて便利だとか?
あと個人的にはApache::DBIが使えてすごい嬉しい・・・
142 :
nobodyさん :02/05/29 09:44 ID:UwM7m6Hb
mod_perlをちゃんと使ってる人って少ないのね・・・便利なのに。
俺はハンドラ書いたりするし便利だと思うけど、Apache::Registoryだ け使うのを指して「ちゃんと使ってない」呼ばわりするのはひどくない? 別にいいじゃん。
>>143 いや、そうじゃなくてなんかスレがあっというまに下のほうに
行ってしまったので「あらやっぱり少ないのねぇ」と思った
だけよ。
145 :
143 :02/05/29 11:20 ID:???
>>144 あ、そういう事か。
既に便利に使ってる人は特に書き込むネタが無いんじゃないかな。
Webアプリ開発手法みたいに日々精進て感じじゃないし。
で、気軽に試せる環境がない(レンタルスペース等では使えない)ので初
心者からの質問ネタも出ないと。
>>142 使ってる人が少ないんじゃなくて、
2chユーザなmod_perlユーザが少ないに5円。
仕事でやってる人はこーいうところ見ないし書かない(書けない)からな。
>>144-145 確かに。でもこのスレでmod_perlプロの裏技とか披露してくれたら
すごい楽しいのに。mod_perl MLもたまにおもしろいネタがあるけど
たいていつまんないしなー。
>>147 mod_perl MLって英語のアレ?
体感で9割がダラ長い初心者質問メールで追っかけるの疲れてやめた。
2chの短いレスに慣れてるから尚更疲れた。
時々興味深いモジュールのアナウンスなんかはあったけど、メールチェッ
クにかける時間を考えたらコストパフォーマンス悪すぎた。俺には。
>>148 そうそうまさにその通り。
まーでもまだ一応入ってる。ほとんど流し読みだけどね。
151 :
nobodyさん :02/07/23 14:10 ID:CrJNwpCC
古スレあげて恐縮なんですがちょっと質問させてください。 Apache::Registry用にコードを書くときはスコープに注意して 書いたりしないとならないようですが、Apache::PerlRunを使う 場合はどこらへんに注意して書けばいいのでしょうか。 基本的に、Apache::PerlRunなら大抵のスクリプトはそのまま動くと 思うのですが、そのままでは動かないスクリプトもあると聞いたので…
記述ミスに気をつければいいと思うよん
普通に書けば問題は無い。 世に反乱してるCGI用のコードは異常なのばっかだけど。
>>152-153 回答ありがとうございます。ということは素人が書いたような
スクリプトが大量に動いてるサーバーに導入するのは控えた方が
よさそうですね。どうもありがとうございました。
155 :
nobodyさん :02/08/11 17:02 ID:aSGcdTFF
BIG-server.comの新プランにより、 2ちゃんにmod_perl導入の予感
156 :
コギャルとHな出会い :02/08/11 17:17 ID:JupEU5/3
mod_perlを導入したらサーバのスワップ溢れた・・・ MaxClients をかなり低くしないと駄目?
>>158 FastCGI でのPerlCGIスクリプトを書くときの留意点とか、Apacheへの導入の
分かり易い説明サイト(日本語)ってありますか??
fastcgiはIE5.01並みの今更感があるんだけど、、、どうなのよ
>>157 元々かなりのメモリが必要。物理的に増設した方がいいんじゃないの
MaxClients 2 でいいよ。
163 :
nobodyさん :02/09/18 02:05 ID:p3QnY3K0
age
164 :
nobodyさん :02/10/17 17:26 ID:w3jHhAtg
mod_perlってグローバル変数は絶対に使えないのですか?
なわけねーだろ
166 :
nobodyさん :02/10/17 19:55 ID:vMdIvLO8
DBMSつかわなけりゃ、PHPなんぞより全然いいのにね mod_perlもfastcgiも普及率低すぎるのはどーゆーことよ!?
DBMS使わなけりゃって、PerlとDBMSのどっちが悪いっていいたいんだ? まあ、mod_perlはメモリ食いすぎってのはあるわな。phpもそれなりに食うけど 松下からの支援があるから大丈夫なんだろう。
168 :
nobodyさん :02/10/18 11:51 ID:LQtlqqOK
>167 PerlとDBMSが悪いってことはないさ PHPってDBとネイティブ接続じゃん PHPがmod_perl、fastcgi、tom猫とかに確実に勝ってるところってそこだけじゃん ↑極端だけど PHPって他に良いとこみあたんないし、簡単だけどアホだし遅いし だから、mod_perlもfastcgiの方がぜーんぜん良いってことさ
Nationalの不買運動をするスレはここですか?
170 :
nobodyさん :02/10/18 18:44 ID:vtdegNTU
>>164 コンフィグみたいなリードオンリーの変数は、
あえてグローバルにすることで速くなる。
上手く使えば、共有メモリーみたいにも使えるかも。
use var使えば、普通にグローバル変数使えるけど、パッケージまたぐような
使い方は無理だね。
普通そんな使い方しないけど。
PHPはHTMLにスクリプトを組み込む形だけどPerlはスクリプトの中にHTMLを埋め込む形になる. PHPならデザイン担当とプログラム担当を分けて分担作業ができるが、Perlだと完全分離は難しい. 個人ユースならともかく、実用ベースではPHPの勝ちかな.
173 :
:02/10/19 04:50 ID:???
↑こいつ何もわかってないな。。。 マジレスしちゃって恥ずかしくないのかよ。。。
fastcgi、名前だけは速い( ´,_ゝ`) プ
PHPもPerlも実際にはあまり使われてないよ。 実際インターネットを見渡せばASPばっかり。
ASPは糞
178 :
nobodyさん :02/10/23 22:09 ID:MeYX5mSP
> 実際インターネットを見渡せばASPばっかり。 Webサーバーでは、apacheがトップシェアですが、 apacheでASPが動くのですか?
うごくよ。いくつかopen sourceの実装があるよ。
実際インターネットを見渡せばJSPばっかり。 perlもヒアドキュメント使わずにjspのような 書き方できればシェアも広がるのに。
>>181 jsp はよく知らないけど、テンプレート
モジュールならいくつもあるよ。そういう話じゃ
ない?
ところでみなさん、どんなテンプレートモジュー
ル使ってる?
183 :
:02/10/24 19:31 ID:???
Mason最強!
Perl + PHP::Session + PHP これ最強。
Ruby最強説
187 :
名無しさん@35周年 :02/10/25 22:10 ID:f0WFU3YH
189 :
nobodyさん :02/10/27 12:41 ID:EphP21JY
単純に <Files ~ "\.(cgi|pl)$"> SetHandler perl-script PerlHandler Apache::Registry PerlInitHandler Apache::StatINC Options +ExecCGI PerlSendHeader On </Files> て書いたんだけど同ディレクトリのデータファイルとか読みこめない・・・ 仕様?
190 :
nobodyさん :02/11/02 01:47 ID:vRpNWbq2
>>182 HTML::Template 使ってるよ。
というか他にテンプレートモジュール知らないので紹介してくれ。
HTML にスクリプトを埋め込む PHP や ASP より
HTML とスクリプトをかなり分離できて割とすっきりすると思う。
でも PHP でも確か同じようなテンプレートモジュールがあったな…
191 :
nobodyさん :02/11/02 05:25 ID:o+t0cR8M
PHPとmod_perlのシェアの違いは PHPはレンタルサーバーにインストールされてる率が高いけど mod_perlが入ってるレンタルサーバーってあまり聞かないから そこらへんなのかな。
>191 HTMLの延長として書けるPHPの方が入りやすいのではないかしら。
194 :
nobodyさん :02/11/09 22:53 ID:4Q7VYiKo
そこら辺で配られてるスクリプト使うには どれくらいの修正が必要? 例えばkentの掲示板とか
195 :
nobodyさん :02/11/09 22:56 ID:4Q7VYiKo
PerlRunモードで動かしても askabbsのデフォルトのままだと500エラー どこら辺を直せばいいのかな?
196 :
nobodyさん :02/11/10 00:39 ID:wej5Zqd8
speedycgiってどうよ? mod_perlよりperlで書かれたフツウのCGIつかうなら楽っぽいけど
197 :
nobodyさん :02/11/10 19:42 ID:xESBM0en
同じライブラリを別のCGIから読むと、必ず後で読んだ方のCGIから、 ライブラリ内のサブルーチンを呼ぶ時に、ありませんとエラーがでます。 ライブラリの読み込みにエラーは出ていません。 ライブラリはpackage使っていません。対策希望。
SpeedyCGI は比較的シンプルなCGIプログラム向きだね。 mod_perl 特有の機能を使用しなければ,よいかも。 ただ,mod_perl と同じような注意点はあるので,そのまま使えるわけじゃないよん。
最近はTemplate-Toolkitらぶ。
200 :
nobodyさん :02/11/12 12:24 ID:+G2ZIth5
>>200 サポートです。
shared_html内でCGI/SSIは基本的にサポートしていません。新しいサーバーs4,s7では初めから動かないようになっています。
古いサーバーでは、shared_htmlでCGIを動かしているアカウントに移動をしてもうらうようにメールした後、順次サポートを停止します。
shared_html内でCGIを動かす理由は無いと思いますので、publuc_html内で動かして下さい。
ちなみにshared_htmlでCGIを動かしたからと言って速くなることはありません。(モジュール化はされません。)
mod_perlですが、利用しますとshared_html内のスクリプトのソース、データが他の利用者から丸見えになります。
隠す手段が無くなり、悪戯・改竄も簡単にできてしまいます。(パーミッション606以上にしないといけない為)
shared_html内でPHPを動かす場合は、SafeModeで起動されるため、ある程度セキュリティ上の確保が出来ますが、mod_perlを使うと上で述べたセキュリティ上問題が生じます。
s3のASP、JSPについても同様の問題があり、最大の壁になっています。
他人に見られても構わない、他人にデータを消される危険性を承知して頂ける場合は対応致しますが、利用者全員にリスクを背負わせる事は出来ないため現在対応しかねています。
>他人にデータを消される危険性を承知して頂ける場合は対応致しますが、 >利用者全員にリスクを背負わせる事は出来ないため現在対応しかねています。 できるのかできないのかどっちや?
XREAはfastcgiじゃなかった?
204 :
nobodyさん :02/11/19 23:04 ID:VhhOAZ+P
SpeedyCGI 使ってる人って少ないのかな。
未だにPerl塚手居る奴ってあほ
206 :
nobodyさん :02/11/25 15:31 ID:4k6ePYUG
mod_perlでjcode.plみたいな外部ライブラリの呼び出し方がわかりません 具体的にどうすればいいんでしょうか?
require 'jcode.pl'; おまえ一回近藤さんところ行って金払って勉強しなおせ。
なぜあれで問題があると思ったかを簡潔に説明せよ。 まーpreloadしとくと幸せかもってのはあるけどな。
210 :
nobodyさん :02/12/11 12:50 ID:OIU8Ox7y
xreaってfastcgiなんですか? 普通のスクリプトでも動く?>fastcgi mod_perlとどっちがいいのかな? sppedycgiはmod_perlより遅かったYO!
一般的にはFastCGIはmod_perlよか早いって事になってるよね。 でも両者同じくらいなんじゃないかな。 どっちも使ってない漏れが言うのもなんですが。
212 :
nobodyさん :03/01/08 19:06 ID:B/d3X4vI
質問!
>>189 さんと同じような質問なんだけど、Apache2系+mod_perl環境に
変更したところ、CGIの中からファイルを読む時に、ファイルのパスを
フルパスで記述しないとエラーになるようになっちゃった。
<Files "*.cgi$">
SetHandler perl-script
PerlHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
</Files>
httpd.conf には上のように書いたんだけど、どこか設定し忘れでしょうか?
おまいら教えて下さい!
213 :
山崎渉 :03/01/15 13:35 ID:???
(^^)
>>212 use Cwd;
print "\n\n",cwd;
実行してみ。
Apachi2にきちんと対応するのは mod_perl と mod_php のどっちがはやいかな?
216 :
nobodyさん :03/01/17 13:14 ID:WcjfDkhM
つーかActivePerl 5.8.0 build 804 出てたのね 気付かなかった
>>210 speedyCGIはね・・・速いんじゃなくて軽いんですよ
もちろん、cgiに比べれば激速だけど
ちなみに、mod_speedyなんてのもあります。
mod_perlはメモリー食いすぎ&スクリプトの入れ替えが面倒
あと、httpd自体が重くなるから、静的ファイルの処理も重くなる
ケースバイケースとはおもうけど、うちの場合、スケーラビリティでは、
speedycgi >>> mod_perlでしたね
mod_perlの場合exitしちゃイケナイ って言われたんですが 処理止める場合や プログラムの終わりはどうすればいいんでしょう?
exitは駄目でもdieはいいんだよな。おもしろいことに。
実際インターネットを見渡せばColdFusionばっかり。 perlもやれ正規表現だなんだと言わずにColdFusionのような 簡便性を重視すればシェアも広がるのに。
>>218 うちのス環境でのストレステストでも、結果だけ見るとmod_perlはspeedyにまけてますた。
もちろん、サーバーのメモリ容量によっても結果は変わりそうですけど。
225 :
nobodyさん :03/01/20 23:28 ID:+/2vXFio
やっぱCの方が早いって事か。 真珠はもうダメポ。
?
227 :
nobodyさん :03/01/24 02:05 ID:lHmFUyZc
もっと_Perlを使おう!
228 :
nobodyさん :03/01/30 20:22 ID:X1QkLVxw
age
229 :
nobodyさん :03/02/01 07:41 ID:ioiLfoAw
pc2.2ch.net Apache/2.0.44 (Unix) mod_perl/1.99_07-dev Perl/v5.8.0 mod_ssl/2.0.43 OpenSSL/0.9.6g DAV/2 FrontPage/5.0.2.2624 PHP/4.3.0RC3 mod_gzip/2.0.26.1a 〜〜〜〜〜〜〜〜〜〜 読み込んでいる以上使わない手はないな
Apache::exit() ってなによ?
231 :
nobodyさん :03/02/02 21:34 ID:ZopgONhA
この板にmod_perl使ってる人いますか? mod_perl で普通にサブルーチン定義ってできないの? なんかサブルーチンが再定義されましたってWARNINGが すべてのサブルーチンに出るんだけど。 動作的には問題なしです。
233 :
nobodyさん :03/02/05 22:26 ID:bAuNqhq0
mod_perlの日本語の文献が少ない〜と思ってたけど、 オライリーの "Apache拡張ガイド" ってかなりイイですね。 単に「CGIを高速化したい」というだけの向きには お勧めしないが。
自鯖持ってない人には結構敷居が高い気がするけど、 漏れもやってみたいんだな。実は。な厨房でした。 phpよりperlの方が、なんだかなぜだか好きなんだな、これが。 ま、別にどっちでもいいんだが。
235 :
nobodyさん :03/02/28 07:13 ID:lH1io3Lr
Perl 5.6.1 mod_perl 1.27 Apache 1.3.27 Vine Linx 2.6r1 で mod_perl を利用したスクリプトを書いてます。 そこで問題が発生したのですが、 普段は正常に動作してくれるものの、 稀に下記のようなエラーを吐きます。 [error] Undefined subroutine &Apache::Registry::handler called. そのエラーの後暫く時間を置くと、また正常に動作してくれます。 どのような原因が考えられるでしょうか?
236 :
山崎渉 :03/03/13 17:10 ID:???
(^^)
237 :
山崎渉 :03/04/17 12:25 ID:???
(^^)
238 :
山崎渉 :03/04/20 06:09 ID:???
∧_∧ ( ^^ )< ぬるぽ(^^)
きちんと use strict および my 宣言しているのですが、 前回処理のときの値が変数に残る場合があります。 原因がまったくわかりません。
>239 とりあえず スクリプトさらせ そしたらみてやる
241 :
nobodyさん :03/05/10 20:51 ID:HZb4mCK8
>239 my $scalar="";で応急対処とか。 perl -wで起動してみるとか。
>>239 抽象的なヒント。
ちゃんと消滅させないと再利用されてしまうぞ。
243 :
山崎渉 :03/05/22 02:04 ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
244 :
山崎渉 :03/05/28 17:19 ID:???
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
モドパ
246 :
nobodyさん :03/06/28 01:43 ID:LpyzQ0Fu
Active Perlのppmじゃmo_perlは使えないんですか?
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
オブジェクト指向で、安全性確保できないPerl+mod_perl。 @ISAつかったら、その時点で、セキュリティ上大問題。 mod_perlの存在理由が問われるわけだが。
251 :
nobodyさん :03/07/28 01:40 ID:ZmLsz+tt
PerlコミュニティーはPHPのようなサーバーサイドスクリプトの 開発には興味ないのかな? PSP(Perl Server Pages)なるものがあったけどもっと本格的な奴 作ってほしいなぁ。
>>251 HTML::Mason
HTML::Embperl
Apache::ASP
があるわけだが・・・
>>251 最近はPHP自身そこから足を洗おうかという風潮だし。
254 :
nobodyさん :03/07/29 00:08 ID:VHYtOhh7
>>252 よく知らないのだけど、それらの実行速度はPHPなどと比べて
速度的に遜色のないものなの?
255 :
無料動画直リン :03/07/29 00:13 ID:2mrfBZ5M
256 :
nobodyさん :03/07/29 00:16 ID:kW5HsU6r
257 :
252 :03/07/29 19:22 ID:wrNh0omf
>>254 252のようなもの使うならperl使わずに
PHP使った方が無難。
速度はmod_perlならそんなにかわんないじゃないの?
といっても最近はテンプレートで表示するのが普通っぽくなってきたから
PHP+smartyもしくはmod_perl+html::templateのどっちか、
っていうわけか。
258 :
nobodyさん :03/07/29 19:22 ID:al0J9pjR
259 :
nobodyさん :03/07/29 22:16 ID:VHYtOhh7
Perl/CGIを、Windowsサーバーならperl2exeで、UNIX系ならPerlccで バイナリにしてしまえば速度は速くなる?
260 :
nobodyさん :03/07/29 22:19 ID:VHYtOhh7
>>257 PHP(mod_php)に比べてmod_perlって何であんなに知名度に差があるの?
あとPHPはANHTTPDやIISなどにも対応してるけど、mod_perlは
Apacheのみだし・・・
使えないんだろ?(プ
>>260 mod_perlといえば、アパッチ::レジストリな訳で。
↓
アパッチ::レジストリといえば、オブジェクト指向必須な訳で。
↓
ところが、Perlのオブジェクト指向は痛い訳で。
↓
そんなもの使いたくないって訳で。
ってのが、現状だろう。
専用サーバだったら、他にも良い言語、アプリ鯖いっぱいあるしね。
mod_perlはマニアックなとても逸品です。
( ´_ゝ`)フーン。それで?
∧_∧ ( ^^ )< ぬるぽ(^^)
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
>>263 Apache::Registryとオブジェクト指向は
使用者にとっては何の関係もないわけだが・・・
> ところが、Perlのオブジェクト指向は痛い訳で。 んなの、プログラミングする人間の勝手だと思うがな。
>Apache::Registry >Perlで作成したモジュールを実行する際に1度だけモジュールがコンパイルされ、メモリに常駐する。 となってますがどのくらいの時間常駐するのでしょうか。 永続的な常駐ならサーバのメモリ食いつぶしちゃうような… #一人だけならともかく皆がやったりすると 気にするほどでもない?
270 :
nobodyさん :03/10/08 23:31 ID:TFC4ht6F
age
皆で使うってどういうことだ。
共有鯖ってことでしょ 共有でmod_perlは無謀と思うのだが
273 :
nobodyさん :03/10/10 05:29 ID:BH1wn/9y
RegistryじゃなくてPerlRunだったら共有鯖でも平気?
suexec 使えなくて良いなら平気なのかも
カレントディレクトリが移動しちゃう問題をなんとかしたいんですけど、 ソースを書き換えたら直りますか?
276 :
nobodyさん :03/10/12 09:33 ID:5sejX4lf
mod_perl、mod_phpでsuexecを機能させてみたいな。 システム領域をオーバーライドするしか方法はないだろうけど。 suexecのソースを読んでみよう
>>276 apacheをrootで動かす気かい?
278 :
nobodyさん :03/10/12 09:49 ID:5sejX4lf
>>277 Apacheは例によってapacheユーザで動作。
カーネルに関わるプログラムをsetuidして子プロセスの実行権限を動的にするしかないんじゃないだろうか。
擬似的にApacheが複数のUIDで動作すると。suexecより危険度が増すけど
1ユーザーごとに1つApacheを動かして、マルチスレッドにしておけば良さそう。
280 :
nobodyさん :03/10/12 13:30 ID:5sejX4lf
メモリがいくつあても足りないと思う
いくつ?512MBのメモリをひとつ刺しておけばいいんじゃない?
282 :
nobodyさん :03/10/12 13:53 ID:5sejX4lf
そういう問題だけじゃないよ。 CPUが追いつかない。 Apache2なら可能性はあるが
283 :
nobodyさん :03/10/30 15:43 ID:MsIzuyZ0
mod_perlもmod_phpのように手軽に使えるようにならん? そうすれば普及するだろうに。
互換性がちょっとな・・・
>>284 CGIプログラムとの互換性のこと?
そんなに変わってくるものなの?
>>285 ・exit();関数は利用できない。代わりに、Apache::exit();を使うそうな。
・パッケージ名を明記すると500 Internal(以下略)。(例: $main::setup)
・SuExecが有効にならない
・もし何かあったら、Apache自体を再起動しなければならない
・mod_perl用に書いたPerlScriptをCGIとして動作させたら、多分動かない。
知っている限りで。(注:正確な情報ではありません)
>>286 互換性の問題は速度の代償として多少は仕方ないか。
>・もし何かあったら、Apache自体を再起動しなければならない
ここら辺はmod_phpでも同じなのでは?
288 :
:03/11/04 20:55 ID:1kmjwkim
>>286 ・Apache::Registry 使用時なら exit は Apache::exit でオーバーライド
されていたような。
・main パッケージを明示するようなコーディングスタイル自体が問題。
・CGI プログラムとして組まれているスクリプトは Apache::PerlRun で
動かす。mod_perl 前提のスクリプトを CGI プログラムとして使うのは
おかしい。
SuEXEC が効かないのと、httpd の肥え方が激しいのがネックだと思う。
まぁ後者はサーバ分ければいいんだけど。
あと mod_perl 入れたからといって CGI プログラムが使えなくなる
わけじゃないので、Apache::PerlRun でも動かんような糞スクリプトは
割り切って CGI プログラムとして使うのも手。
mod_perler なら、Apache::Registry使わなきゃ Apache::PerlRunで満足すんなYO! ところでさア、お金貸して?
Action text/html /path/to/cgi みたいな感じで、テキストを置換するシステム作ってたんだが XeonMP 2.8G でさえ、30req/sがやっとこさだったのだが、 PerlRun にしたら、100req/s 程度まで向上した。 男はApache::Registryだろうということで、試してみたんだが、 案の定あちこち手を入れないとウゴカナカタよ。 それでも、バックエンドDBアクセスナシで700req/s DB接続ありで200req/s行ける感触をつかんだので かなり満足。 行き着く先はCでApacheモジュール化なのだが、そうすると DBIのような統一インタフェイスが使えずDB依存になってしまうのが辛い。 上のカキコで PATH_INFO 云々の話が出てたが、ウチで試したときは アクションハンドラとして呼ばれないときも PATH_INFO=/ PATH_TRANSLATED=/path/to/www/ <- これファイルじゃネーし とか出てきて少々面食らった。これはバグ? 実装上の都合?
しかし流行りませんなぁ。
293 :
nobodyさん :04/02/03 03:55 ID:6SsHdaLm
喚起あげ
294 :
nobodyさん :04/02/10 21:22 ID:YkFrJUBA
素朴な疑問なのですが、 mod_perl使ってる時にも通常のCGIとしてperlプログラム走るんですか?
ドテッ! ネタ?
Apache::PerlRunとApache::Registryどちらでも良いんだけど HTML::Template使えますか。
297 :
nobodyさん :04/02/11 17:34 ID:8Wm4X/2a
mod_perl始めますた、ちょいと質問です。 皆さんは、 PerlSendHeader On にしてますか? mod_perlを使うなら Off だろ、とか、 漢なら Off にしとけ、とか、 なんかポリシーみたいなものってありますか?
/ ̄ ̄ ̄ ̄ ̄ ミ / ,――――-ミ / / / \ | | / ,(・) (・) | (6 つ | | ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | /__/ / < mod_perlを使うなら Off だろ! /| /\ \__________
C:\Program Files\Apache Group\Apache2\bin>apache -t Syntax error on line 159 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf: Cannot load C:/Program Files/Apache Group/Apache2/modules/mod_perl.so into server: 指定さ れたモジュールが見つかりません。 _| ̄|○ファイルあるのに…
mod_perlが流行らないのは、 やっぱ、スクリプトの制限がキツくなるからってことでおk?
Apache::PerlRun だとたいした制限は無いんだが ISP屋の立場から言うと、suExecできないのが一番痛い
WinのApache2にmod_perl!?よくもまあ・・・
頭とセンスg(ry
>299 ってことはやり方が悪いという事かな……orz >303 設計とかテストとかやるときはローカルのWin鯖でやってますが UNIX版と違い出るんですか。
>>306 そもそもOSレベルで違うじゃん…
Windowsネイティブapache2のモジュールって拡張子.soだっけか?
スクリプトの書き方一緒じゃないの?
>>307 一応、soだよ
まあ、動くかどうかのテストはWinでもいいんじゃないかな
ベンチマークや負荷のテストは意味ないけど
apache と mod_perl って両方とも Winネイティブなんかな? apache はwinネイティブで mod_perl が cygnus だったら 動かないとか。 もう少し詳しく書かないとなんとも言えないんじゃないかなぁ
「指定されたモジュールが見つかりません」の場合 ファイルは見つかっても何らかの原因でメモリへのロードに失敗している というケースが実際にはほとんど 原因はバージョン不整合とかいろいろ考えられるが まあ地道に切り分けるしかないな
312 :
nobodyさん :04/02/16 16:53 ID:1pUxS5fU
色々な所を参考にして mod_perl を組み込んで見ました。
そして以下のテストスクリプトを二種類の方法でちゃんと動作しているのですが、
CGIとして呼び出されてるのか、mod_perl として呼び出されているのかサッパリでして、、
確認する方法ってのはありますか?
## /home/user/perl/test
#!/usr/bin/perl -w
use strict;
print 'content-type: text/plain; charset=EUC-JP' . "\n";
print "\n";
print join("\n", map "$_ = $ENV{$_}", sort keys %ENV);
## httpd.conf
Alias /perl/ /home/user/perl/
Alias /cgi-bin/ /home/user/perl/
<Location /perl>
SetHandler perl-script
PerlHandler Apache::Registry
Options ExecCGI
PerlSendHeader On
</Location>
<Location /cgi-bin>
SetHandler cgi-script
Options ExecCGI
</Location>
http://hoge.com/perl/test -> OK.
http://hoge.com/cgi-bin/test -> OK.
思いつきだが、↓みたいなのでどうだ? #!/usr/bin/perl -w use strict; print 'content-type: text/plain; charset=EUC-JP' . "\n"; print "\n"; print `ps aux | grep perl`;
>mod_perlで実行されている場合には、環境変数の $ENV{GATEWAY_INTERFACE} に >'CGI-Perl/1.1' が設定されます。(通常CGIは 'CGI/1.1') >また、'MOD_PERL' 環境変数が設定されます。(mod_perlのバージョンが設定される)
315 :
312 :04/02/17 12:47 ID:???
>>313-314 返事ありがとう。
早速試してみようと思ったんですが、
なんか電源が入らない、、orz、、bios すら起動しねーーーー
出直してきます。。(つд`;)
316 :
312 :04/02/18 19:28 ID:???
>>313-314 試して見ました。
## /perl/test
GATEWAY_INTERFACE = CGI-Perl/1.1
MOD_PERL = mod_perl/1.29
## /cgi-bin/test
GATEWAY_INTERFACE = CGI/1.1
問題なく動作しているようです、有難うございました。
ところで別の疑問なのですが、
CGI経由で動作している時には suEXEC で動作して欲しいと思って
suEXEC 有効にしてみました。
/perl/test -> nobody権限
/cgi-bin/test -> user権限
今の所正常に動作していると思うのですが、これって問題ない、、ですか?
どこのサイト見ても suEXEC は無効にしとけー、
てな事しか書いてなかったので少し不安なのです。
mod_perl で Apache::Registry、Apache:PerlRun で CGIスクリプトを実行すると、 mod_perlが組み込まれている httpd のプロセスの中で動いてしまうのでsuexecは効かない CGI経由で別プロセスで動かすからこそsuexecが有効
318 :
nobodyさん :04/02/29 04:50 ID:yMfKis4M
http://dream.lib.net/room/cgi/download.html#link で公開されている Ranking link
というCGIを自サーバーで動作させたのですが、試してみると結構な確率で真っ白な画面が
ブラウザに表示されます。
このCGIは実績があるのでこのCGIのせいではなくて、mod_perlのせいなのだと思うのですが、
解決策が全くわかりません。 助けてください・・・。
環境は、
OS: Redhat 9.0
WebServer: Apache1.3.29
mod_perl version 1.29
perl 8.5.1
です。
OS以外は全てソースからコンパイルしてインストールしました。
mod_perlが使える鯖ってありますか?
ありません
>>318 助けてやりたいのはやまやまだが
318 に書かれた情報だけでは何とも手の差し伸べようがない
error_log に何が吐かれてるか確認する前に 318 を書いたのだとしたら
君の罪は麻原並に重い
>>318 こんなコーディングじゃ mod_perl は誤動作するのが当たり前田
>319 XREA
>318 眺めたところそのスクリプトのせいのような気が……。
325 :
318 :04/02/29 15:21 ID:yMfKis4M
>322 >324 どの辺りか教えて頂ければ幸いです・・。 お願い致します。 >321 エラーは一切吐かれていませんし、ブラウザで500番エラーが 表示されることもありません。
実績のあるプログラムだからといって、 mod_perl で動くかというとそうとは限らない。
KやRのはmod_perlではまともに動かんぞ。
正しくは、全Perlコードをパッケージで管理しなければ、 mod_perlでは、正しく動きません。または、高速動作できません。
Apache::PerlRun でもそうなの? > 要パッケージ管理
だからmod_perlは流行らない〜♪
331 :
nobodyさん :04/03/02 21:16 ID:O+pQat/o
ふぅ、やっとApache::ASPが動いたよ。 これってmod_perlだけじゃなく、 全てのモジュールをstaticで構成しないと駄目だったのね。 mod_perlだけだと思って何度も何度もやり直してしまいました。。
そういや何年か前、DSO のまま perl_ssi を作ろうとしてハマったことがあった
334 :
nobodyさん :04/03/05 19:12 ID:GwB2WnjS
困りました。Apache-1.3.29 + mod_perl-1.29 + perl-5.6.1 の環境だったのを perl-5.8.3 に変えて見ました。 mod_perlでスクリプトを出力すると charset が間違っていないにも関わらず文字化けします。 どうやらutf-8で出力されているようなのですが、、 charset を utf-8 にすれば文字化けはしないのですが、 今度は CGI で実行した時に当然ですが文字化けします。 これは、、どうやって回避すればよいのでしょう。 ## httpd.conf <Location /perl> SetHandler perl-script PerlHandler Apache::Registry Options ExecCGI PerlSendHeader On </Location> <Location /cgi-bin> SetHandler cgi-script Options ExecCGI </Location> ## script my $euc = 'あいうえお'; print "content-type: text/plain; charset=EUC-JP\n\n"; print "$euc\n";
335 :
334 :04/03/05 21:46 ID:???
申し訳ありません。大ボケ噛ましておりました。 スクリプトが utf-8 でした。。。申し訳ありません。。 以下簡単にまとめました。 ## script euc-jp my $euc = 'あいうえお'; print "content-type: text/plain; charset=EUC-JP\n\n"; print "$euc\n"; /perl(mod_perl) も /cgi-bin(CGI) も問題無し。 ## script utf-8 use utf8; binmode(STDOUT, ':encoding(euc-jp)'); my $utf8 = 'あいうえお'; print "content-type: text/plain; charset=EUC-JP\n\n"; print "$utf8\n"; /perl(mod_perl)だと文字化け、charsetを utf-8 に変更すると問題なし /cgi-bin(CGI) だと問題無し、charsetを utf-8 に変更すると文字化け mod_perlの標準出力(STDOUT)は binmode では設定出来ない、のかな? だとすると mod_perl の標準出力の文字コードを設定するにはどうすればよいのでしょう。 とりあえず euc-jp でスクリプトを書けば問題ない話なんですがちょっと↑が気になりました。
336 :
nobodyさん :04/03/06 10:11 ID:4ILBaJdh
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator,
[email protected] .....
という文章がcgiを通して表示される最後に挿入されます・・・。
この文章を表示しないように設定したいのですが、httpd.confで
いじる場所もなさそうですし、どこを設定すればよいのでしょうか?
ご教授お願い致します。
スクリプト
>336 printした後の処理で実行時エラーが出てるとかのような。
まあまず error_log をチェックするのが正しい姿勢だろうな
Apache::Registry で qq で囲んだ文字に エスケープ無しで " が入ってると実行時エラーが出た。 注意って事で。
qq"aaaaaaa"bbbbbbbb"cccccccc" そりゃエラーになるよ
いや print qq(nantoka"kantoka"hontoka); でエラった。
ちょっと何が原因なのかわからなかくなったので、皆さんのお知恵を拝借したいです。 環境 Apache/2.0.40 (Red Hat Linux) mod_perl/1.99_07-dev perl, v5.8.0 built for i386-linux-thread-multi A.pm------------ package A; sub method1 {# hoge} sub method2 {# hoge} ---------------- B.pm------------ package B; use base qw ( A ); ---------------- test.cgi---------- use B; $o = B->new; $o->method1; $o->method2; ---------------- だいたいこんな感じ。 症状: test.cgiの実行でこける。 エラーログを調べると、ModPerl::Registryさんが実行する度に「Bクラスにはmethod(1 or 2)はない」と違うことを言っている。 実際、ブラウザに状況を出力しながら動作確認をすると、確かにメソッド呼び出しのところでこけている。文法エラーでないことは途中までとは言えHTMLを吐き出していることからわかる。 なので、mod_perlさんのどこかに不具合があるのではないかと考えたのですが、そこまででした。 どんな原因が考えられますでしょうか。
344 :
343 :04/03/14 20:48 ID:???
間接的な原因が判明しました。 Apacheが古いバージョンのスクリプトでコンパイルした実行ファイルを、しっかり握って離していないだけでした。_| ̄|○ 元ファイルを全部消しても、ブラウザでアクセスするとまだ結果が出るのです。 握りこんだ実行ファイルを手動で消す方法はないでしょうか。
Apache::Reload を使えばできるんじゃないかと思うが 自分でやってみたことはないので割と無責任
346 :
343 :04/03/15 00:47 ID:???
>>345 現在は、動作がおかしくなったらApacheのrestartと言うあまりクールでない手でやってます。
ありがとうございます。Apach::Reloadのmanを見てみます。
347 :
336 :04/03/15 10:40 ID:heuYMXtN
エラーログには [error] Undefined subroutine ?::handler called. と出力されています。 なんじゃこのhandlerは??? 名前が無いです・・・。 ご教授お願い致します。
>>347 cgiがおかしいかmod_perlに対応してないものを使ってるんだろ。
作者に問い合わせるんだな。
>>347 珍しいエラーだなあ。
ちなみに何をやろうとしてそういう状態になったんだ?
Apache::Registry? Apache::PerlRun?
それとも Movable Type だか AxKit だかを PerlHandler で組み込んだ?
350 :
mod_perlはじめて君 :04/03/23 13:29 ID:3jX1Q8fV
mod_perlってブラウザから起動するcgiファイルにはpackage名つけちゃまずいのでしょうか? packageつけるとSubroutine check redefinedとゆうwarningsが沢山出ちゃうんです。 でもpackage消しても Prototype mismatch: sub Apache::ROOT::sakura::cgi_2dbin::test::test_2ecgi::check vs () というwarningsが出てしまうんですが、これってmod_perlの仕様なんでしょうか? warningsが出るのが気になるタイプの人なんです僕o(_ _)o
351 名前: nobodyさん :sage 投稿日: 04/03/25 (木) 17:44 ID:??? もしかしてApache::Registryだとopen FH, >hoge.dat でファイルを作ってくれなくなった?
my変数はブロック抜けたらちゃんと開放されるそうですが、 my $foo = { hoge => 'hoge' }; だと$fooの値は消えても無名ハッシュ内の値は消えないとか そう言う事は無いですか。
>353 CGI等で使うと終了時に全クリアされるようですが mod_perl(Regstry)では値がキャッシュされると聞いたのでこちらで聞きました。 要は、リファレンスが変数に格納されていると、 変数が消えた瞬間に値の内容もきちんと消されると言う事ですね。
>354 ×値 ○参照されている値 #少し語弊があるので修正
mod_perlのmodってモッドって読めば良いのですか。
モード・パールでは
module_perl
おれは勝手にモドパールと呼んでる。 世間的にどうなのかは知らない。
モゥデュパァァァッル
$self のような mod_perl 自身のグローバル変数に値を追加するのは止めておいた方が良いですか? 一応、local $self->{'HOGE'} = 'hoge'; とかやっているのですが。
>>361 その書き方だと $self はリファレンスだから、local する意味はない。
ってか、$self の位置づけがいまいちわからん。
mod_perl で呼び出すスクリプトで使ってるオブジェクトのリファレンス?
すみません、そういわれて調べたところ 起動時に PerlRequire で読み込んでいる Apache2 モジュールの機能でした。 てっきり mod_perl を使うと %$self が勝手に用意されるのかと。 local は意味が無かったのですね……。
364 :
362 :04/05/01 20:23 ID:???
いえ、元々は単にファイルを置いてあるディレクトリを $self->{'FILEDIR'} (このキーは初めは用意されていない)に入れたいと思っただけなのですが、 そこで mod_perl でこういう予め決まったキーや値が入っている変数に勝手に追加して良いのかどうか、 不安だったのです。 どこかに何か影響が出たりするのだろうかと。
366 :
362 :04/05/02 03:46 ID:???
>>365 現段階でそのキーが使われていなければ使える。
が、将来的にもそのキーが使われない保証はない。
スクリプトをオブジェクト指向で書いているなら、そのオブジェクトに入れるべき。
書いていなければそう書き直しましょう。
367 :
nobodyさん :04/06/14 00:54 ID:UCF4wTWN
Aapche2.0.49 mod_perl_1.99_13 + perl5.8.3 + Apache::DBI + MySQL の構成で、lock tableした後に どこかのSQL実行に失敗してerrstrで処理するとunlockできないのだが、 何とかならないのだろうか。 識者の見解キボン。 失敗しなきゃ良いというのは無しでお願い。
perlccでバイナイリコードにしたスクリプトをmod_perlにて実行することは出来ないでしょうか? # perlcc -B test2.cgi.org -o test2.cgi *インタプリタは内蔵せずスクリプトをバイトコードに変換するだけ(たぶん) test2.cgi.orgの内容 #!/usr/bin/perl print "Content-type:text/plain\n\n"; print "Hello world!!\n"; @ # ./test2.cgi の結果 Hello world!! @ mod_perlを無効にしWEBからアクセスした結果 Hello world!! @ mod_perlを有効にしWEBからアクセスした結果 Missing right curly or square bracket at /home/hoge/public_html/mod_perl/test2.cgi line 3, at end of line syntax error at /home/hoge/public_html/mod_perl/test2.cgi line 3, at EOF その時のerror_log [Wed Jun 23 16:27:32 2004] [error] 6945: ModPerl::Registry: Missing right curly or square bracket at /home/hoge/public_html/mod_perl/test2.cgi line 3, at end of line syntax error at /home/hoge/public_html/mod_perl/test2.cgi line 3, at EOF 環境:Fedora core1、apache 2.0.48-1.2、perl 5.8.3、mod_perl 1.99_12-2 RH7.3、apache 1.3.27-4、perl 5.6.1、mod_perl 1.26-5 でも似たような結果でした やりたいことはPerlで高速な動作をしつつ、ある程度のソースの隠蔽をしたいのですが perlcc+mod_perlで動かす方法、もしくはそれに変わる代替手段がございましたら ご教授くださいませオマイら。
よ〜くかんがえよぉ〜
世の中的には mod_perl って 「原理はわかんないがとにかく CGI が高速になる魔法の箱」 と思われているのものなのだな
だってだってだって だって厨なんだもん
お願いお願い 笑わせないで
373 :
nobodyさん :04/06/23 22:44 ID:GOWHNOao
374 :
368 :04/06/24 14:47 ID:???
Apache::Registryは高次元でPerlのエミュレートをしており、通常のCGI/Perlと同様に mod_perlもバイトコードへの変換プロセスを踏むと私は何の根拠もなく推測しており mod_perl側で通常のソースとバイトコードを判別し適切なステップを踏むように作られていれば perlccでコンパイルしたスクリプトが動作しても理論上不思議ではないと 思うのですがどうでしょうか。 この場合、ごく単純なスクリプトでも動作しないので mod_perl側でperlccを考慮した機構がないんだとは思いますが。
mod_perl は、多くの人が勝手に想像しているイメージとは異なり、 「CGIを高速に実行する環境」ではありません。 「apache モジュールの一つで、perl インタプリタを内蔵しており、 apache API の操作手順を perl スクリプトとして外部に切り出すことのできるもの」 などとするべきでしょう。 この違いはたいへん重要です。なぜなら mod_perl それ自体には 「CGIのプログラムファイルをロードする機構は含まれていない」からです。 mod_perl に用意されたロード機能は、apache 起動時に、 httpd.conf で指定された perl スクリプト(クラスモジュール)を読み込むこと、 だけです。CGI プログラムファイルを直接読み込むことはできません。 CGIを実行するためには当然プログラムファイルをロードしなければならず、 そのためにはローダとなる機構が別途必要です。 このために Apache::Registry という perl クラスモジュールが mod_perl と同梱して配布されています。 httpd で Apache::Registry を指定しておくと、apache 起動時にこれが読み込まれ、 以後 CGI のローダとして動きます。 この Apache::Registry の機能は、スクリプトファイルを読み込み、 これを CGI をエミュレートした環境下で eval することです。 ところが、perlcc でコンパイルされたバイトコードは use ByteLoader されています。 この ByteLoader のようなソースフィルタが、eval と相性最悪なのです。 そのため、Apache::Registry の方法では、バイトコードを実行できません。 Apache::Registry とは異なる原理に基づくローダを自作すれば、 理論的には不可能な話でも無いと考えられます。
376 :
368 :04/06/26 05:51 ID:???
>>375 大変勉強になりました。
何か別の方法を模索してみようと思います。ありがとうございました。
mod_perl って、Cで書いたCGIより速いんだね。 まぁ、メモリ上にキャッシュするから当然っちゃー当然だがね。
いやケースバイケースで、CのCGIの方が速いケースもあるけど しかしまあこの板の住人が使うケースの99%は mod_perl の方が速いだろうな ちなみに、apache の module を C で書いて組み込んでしまえば mod_perl よりさらに速い
379 :
nobodyさん :04/08/17 15:02 ID:fsY5EgQV
mod_perlを初めて使います。 DBアクセスで、cgiだと動作するのですが、mod_perlだと動作しません。 ソースは以下です。いろいろなサンプルでは、cgiの場合と、mod_perlの 場合に違いが感じられないので、設定、もしくはユーザー権限のようなもの かなと想像しているのですが。 ご教授頂けませんでしょうか。 #!/usr/local/bin/perl -w use strict; print("Content-Type: text/plain\r\n\r\n"); my($dbh,$sql,$sth,$res); use DBI; my $key = '1234'; ############# my $dbh = DBI->connect("DBI:mysql:test","test","pas"); $sql = "SELECT * from TBL where key =".$dbh->quote($key); $sth = $dbh->prepare($sql); $res = $sth->execute; $sth->finish; $dbh->disconnect; ############# print "res="; print $res;
CGIだと動作するの? ふんとに?
画像の合成とかはCの方が速いね。
「動作しません」じゃなくて、 どういう風に動作しないのか、 エラーを吐くのか、それとも期待と違う動作なのか、 とかその辺を報告しろと
383 :
DB :04/08/17 15:28 ID:fsY5EgQV
ブラウザ上では、「サーバーが見つかりません」となります。 cgi(普通のPerl)では動作します。
( ゚д゚)ハァ?
385 :
DB :04/08/17 15:50 ID:fsY5EgQV
ちなみに、 ############# から ############# をコメントアウトすると 動作します。 cgi として動作させれば、$res の値も正常に表示されます。
DBの設定が悪い。perlをsshでログインしてサーバ上で動かしてるなら 多分あんたの環境じゃsu_execじゃないと動かない。 以上。
387 :
DB :04/08/17 16:51 ID:fsY5EgQV
DBですね。何を調べてよいのか分からなかったので、助かります。 有難う御座いました。
コメントアウトしたら、本当に動くのか? print("Content-Type: text/plain\r\n\r\n"); のヘッダーでmod_perlって動いたっけ? 事前に200OKを吐く必要があったと記憶しているが・・・・ 誰も指摘しないのはなぜだろうか・・・
391 :
DB :04/08/18 19:13 ID:+YCQrBn3
>>389 379を書いた者です。
>>388 httpd.conf の中で
PerlSendHeader On
とすれば良いらしいのですか、Apache に詳しくないので・・・。
httpd.conf の中で、それらしい設定は
AddModule mod_perl.c
<IfModule mod_perl.c>
<Files *.xpl>
SetHandler perl-script
PerlHandler Apache::Registry
PerlSendHeader On
Options ExecCGI
</Files>
</IfModule>
としています。
拡張子 .cgi が通常のcgi
拡張子 .xpl がmod_perl で動く設定です。
初心者的質問で悪いですが、解説サイトみても分からなかったので・・・。 Apache2でDSOとしてmod_perlを読み込む場合のhttpd.confの記述はどのように すればよろしいでしょうか?
fastCGIのスレどこよ?
FastCGI、SpeedyCGIどちらも専用スレ無いみたい。
まあどっちも専用スレ立てたとしても伸びる気がしないよな
保守
ホッシュ
mod_perl2ってどうよ?
401 :
nobodyさん :05/01/14 14:57:29 ID:BN1J93Zh
mod_perl(Apache::Registry)とPostgreSQLを使ってプログラム組む事になりました。 Apache::DBIをつかってコネクションをkeepしたままにしておくと、 httpdに比べてpostmastarのプロセスがやたら増えてしまい、最終的には コネクションエラーになっていまいます。 現在httpd.confのMaxSpareServersを32、postgresql.confのmax_connectionsを256 にして急場を凌いでいます。 解決策をご存知の方、お助け下さい。
Apache::DBIが有効になっておらず毎回新しいコネクション張りなおしてるんじゃないの? 正常ならpostmasterのプロセスは32より増えないはず。postmasterとhttpdのプロセスを監視してみれ。
403 :
401 :05/01/19 10:18:58 ID:???
>>402 解決しました。というか原因はWebアプリではありませんでした。
裏で動かしていたデーモン(同一DBにアクセス)がバグっていました。
another htmllintをmod_perlで動かした椰子いる?
>>404 Apache::RegistryでもPerlRunでも
無限ループっぽくなった
Apche2とmod_perl-1.99で、XML::GDOME::XSLTを動かした人いますか? Apache1.3とmod_perl-1.29で動いていたスクリプトが、Segfaultしまくります。 XML::GDOME::XSLTは全然バージョンアップされていないようだし。 他のXSLTモジュールを使うしかないか・・・
408 :
406 :05/02/16 10:11:27 ID:???
>>407 残念ながら違うようです。
というか、それを避けるためにXML::GDOME系を使っています。
XML::GDOME系はlibxml2とgdome2を使っており、expatは使っていません。
createDocFromStringはOKでcreateDocFromURIはダメみたいです。
410 :
406 :05/02/17 13:18:09 ID:???
>>409 意識はしていませんでしたが、preforkになっていました。
rootにsetuidしてスクリプトの中で各ユーザーにsetuidするというプログラムを動かしたいのですが mod_perlで動かすとsetuidされているファイルでも動作権限が apacheの権限になってしまいますがこれは仕組み上、しょうがないでしょうか? rootにsetuidするためにはapacheをroot権限で動かさないとやっぱ駄目なのかな
BIG_SECURITYHOLE
>>411 それができたらすげーいいよなとは俺も思うのだが
UNIXのプロセスと権限管理の仕組として無理
apache を root で動かすという極めて危ない橋を渡らざるを得ない
もちろん、mod_perl から別プロセスを立ち上げれば、そいつを setuid することはできる
けど、別プロセスを作りたくないからわざわざ mod_perl を使うんだよな
やっぱそうですよね orz
/home/*/public_html を @INC に追加ってできない? ユーザ追加する度に httpd.conf を弄るのは…(;´Д`)
>>415 既存のモジュールをユーザーに勝手に上書きされたらどうすんのさ。
417 :
nobodyさん :2005/05/20(金) 12:10:42 ID:Td1z8gJo
MOD_PERL2.0の起動の仕方について
1日掛かりでやっとの思いで以下のキーワードをDOS窓で入力して
ppm install
http://theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd mod_perl.so(Mod_perlモジュール)をインストール出来ました。
そして、httpd.confに以下のコマンドを追加して、extra.plをhttpd.confと同じフォルダに置き
##Mod_perl##
LoadFile "C:/usr/local/bin/perl58.dll"
LoadModule perl_module modules/mod_perl.so
PerlRequire "C:/Program Files/Apache2/conf/extra.pl"
#Alias /perl/ "/Apache2/perl/"
<Location /perl>
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
Options +ExecCGI
PerlOptions +ParseHeaders
</Location>
##Mod_perl##
Apacheを起動してもDOS窓は、画面に何もコメントを表示しないまま閉じてしまいます。
Mod_perlモジュールをインストールしてから、Apacheを起動するには一体どの様にすれば
宜しいかどうか教えて下さい。
ちなみに私は以下URLを参照しました。
ホームサーバの構成
http://eazyfox.homelinux.org/etc/serverspec.htm Mod_perl2.0のWin32の説明
http://perl.apache.org/docs/2.0/os/win32/config.html extra.plも上の両ページに書かれている内容を埋め込んでやってみましたがどちらも結果は同様です。
どうかご教授宜しくお願いします。
>>417 まず error_log を見ろ。全てはそれからだ。
419 :
nobodyさん :2005/05/21(土) 00:03:42 ID:rPKP3rpi
418さん> 只今見つけました。 なにしろerror_log の存在は存じてなかったもので。エラーは以下の通りです。 [error] Can't load Perl file: C:/Program Files/Apache2/conf/extra.pl for server localhost:80, exiting... このエラーですが、PerlRequireでRequireしたextra.plに構文ミスがある場合にも 適用されます。 改めて宜しくお願いします。
>>419 Can't load Perl file
って書いてあるんだから、そのまんまだろ。
パスは合っているのか?
mod_perl 以前に perl でそのファイルを普通に読ませてエラーは出ないのか?
421 :
nobodyさん :2005/05/21(土) 12:02:12 ID:rk+ZZalH
420さん>
>Can't load Perl file
>って書いてあるんだから、そのまんまだろ。
>パスは合っているのか?
はい、extra.plに
print "XXX";
だけにしてApacheを起動したら、"XXX"が表示されましたので、パスが正しいのは
確かめられました。
>mod_perl 以前に perl でそのファイルを普通に読ませてエラーは出ないのか?
extra.plを
Mod_perl2.0のWin32の説明
http://perl.apache.org/docs/2.0/os/win32/config.html の内容にして、perlにてDOS窓で起動させたら以下のエラーメッセージが出ました。
C:\Program Files\Apache2\conf>perl extra.pl
ModPerl::Const object version 1.999024 does not match bootstrap parameter 2.0000
00 at C:/usr/local/lib/DynaLoader.pm line 253.
Compilation failed in require at C:/usr/local/site/lib/Apache2/Const.pm line 17.
BEGIN failed--compilation aborted at C:/usr/local/site/lib/Apache2/Const.pm line
17.
Compilation failed in require at extra.pl line 9.
BEGIN failed--compilation aborted at extra.pl line 9.
これで、目的のPMのパスが合ってる事が確かめられると思いますが、何しろPMは人が作成した
もので解決のしようが有りません。
どうしてでしょうか、改めて宜しくお願いします。
422 :
nobodyさん :2005/05/21(土) 12:32:46 ID:??? BE:457423799-##
423 :
nobodyさん :2005/05/21(土) 12:57:37 ID:rk+ZZalH
>>423 そういう場合、しばらく待って返事がないようであれば
「こちらに投稿しましたが返事がないので…」
…ってマルチポストを事前に断るのがマナー。
425 :
422 :2005/05/21(土) 13:50:02 ID:??? BE:67767034-##
べつにマルチを責めたわけじゃないけど、どっかで見た質問だと思ったんで リンクしてみた。 インターネッツの世界が広がった瞬間でもあった。。 gooで回答して良回答ポインツもらってもいいけど、ここで回答しておく。 参考にしたサイトにできるだけ忠実にインストールすると できると思う。特にApacheをインストールしている場所が "Program Files" の中ということで、これにはフォルダ名に空白が含まれているから実行でき ない場合もある。 Cドライブ直下に再インストールしてみてみてみ。あとAliasがコメントだが・
426 :
nobodyさん :2005/05/22(日) 14:10:13 ID:3yEsfTzN
425さん>
Apache2をCに移動し、httpd.confも
C:/Apache2/
にパスを書き直しましたが、やはり結果は変わりません。
ホームサーバの構成 の内容で
http://eazyfox.homelinux.org/etc/serverspec.htm の通りにextra.plを作成してもApacheは閉じてしまいます。
Perlでそのextra.plを開いて見ると以下のエラーが出ますが
C:\Apache2\conf>perl extra2.pl
Can't locate Apache2.pm in @INC (@INC contains: C:/usr/local
te/lib .) at extra2.pl line 1.
BEGIN failed--compilation aborted at extra2.pl line 1.
C:/usr/local/site/libにApache2.pmはないです。Apache2のフォルダは
ありますが。
一体、どの様にすればMod_perl2.0を動かせるようになるのでしょうか?
改めてご教授宜しくお願いします。
427 :
nobodyさん :2005/05/22(日) 23:37:12 ID:3yEsfTzN
426の者です。
追記です。
参考サイト
http://eazyfox.homelinux.org/etc/serverspec.htm を忠実にやろうとした所で、ウチはActivePerl5.8.1で、Apache2.pmと
いうモジュールはどこにもないし
C:Perl/lib/Apacheは、参考サイトのextra.plのApache::とは全然違うモジュールばかりです。
Apache2.pmのキーワードでネットで検索して見ましたが、具体的なヒントは得られませんでした。
一体何故
本家
http://perl.apache.org/docs/2.0/os/win32/config.html と参考サイトのextra.plは内容が異なっているのでしょうか?
参考サイトは、extra.plが何故use Apache2 ();
use Apache::
なのでしょうか?
その点が私には理解出来ません。
どうしてマニュアル通りにやってその結果が約束されないのか私にはとても納得行きません。
やはり、どの様な手をつくした所でmod_perl2.0のインストールはどうしても完了出来ません。
そんなにmod_perlの導入は、サーバ構築の上級者でないと出来ない技なのでしょうか?
でもどうしてもmod_perl2.0のインストールしたいんです。
改めてご教授宜しくお願いします。
429 :
nobodyさん :2005/05/23(月) 13:36:19 ID:6v1jDvRv
428さん>
やっぱりmod_perl2.0のセットが変わってしまったんですね。Changesを解読するのは大変ですね、Yahoo翻訳でもとんちんかんな和訳ですで、マニュアルは本家一本に統一される形となりました。
決断して、Activeperl、Apacheを一度全てアンンインストールしてActiveperl5.8.6とApache2.054を再インストール、そして、本家の通り
http://perl.apache.org/docs/2.0/os/win32/index.html をやり方に絞り再挑戦しました。
そして、
ppm3 install
http://theoryx5.uwinnipeg.ca/ppms/mod_perl.ppd でmod_perl.soをもう一度DLして自動インストールした所、
Mod_perl::Util.pm
のVerがアンインストール前は1.999024で、再インストール後は2.00000になってたので、それが元で421に書かれてるエラーになったらしかったです。
Verも合ったので今度こそはの思いも空しく今度は以下のエラーに引っかかりました。
C:\Apache2\conf>perl extra.pl
Can't load 'C:/usr/local/site/lib/auto/APR/APR.dll' for module APR: load_file:こ
のアプリケーションの実行に必要なライブラリ ファイルの 1 つが見つかりません。 at
C:/usr/local/lib/DynaLoader.pm line 230.
at C:/usr/local/site/lib/APR/Const.pm line 18
Compilation failed in require at C:/usr/local/site/lib/APR/Const.pm line 18.
BEGIN failed--compilation aborted at C:/usr/local/site/lib/APR/Const.pm line 18.
Compilation failed in require at extra.pl line 10.
BEGIN failed--compilation aborted at extra.pl line 10.
APR.dllはパス通りのDirにありました。
あるのに何故dllがロード出来ないでしょうか?
どうか引き続きご教授宜しくお願いします。
>>429 >>417 を見ましょう
要はDOS窓からperlで呼び出すのではなく、
Apacheを起動させるのが正しいです
Apacheの起動が正常の場合は何も言わずにDOS窓を閉じます
エラーが起こった場合はエラー内容を表示してescを押すまで
30秒間待ってそれから自動的に閉じるようになっています
431 :
nobodyさん :2005/05/24(火) 10:40:05 ID:dxfDHIc8
430(◆hikArinCL2)さん>
Apacheが閉じれば、ブラウザでスクリプトを呼び出しても「表示ができません」と
でて、エラーログにも
[error] Can't load Perl file: C:/Program Files/Apache2/conf/extra.pl for server localhost:80, exiting...
が相変わらず記録されます。
そしてウチの場合、Apache側にエラーが起きてもDos窓に何らかのメッセージが出てアッと
いう間に閉じます。
で、Apacheが閉じれば、決してブラウザでLocalhostは動きません。
もう、捨て身ですが
C:\Apache2\bin> ab -n 5 -c 5
http://localhost/perl/printenv をDos窓に打ち込んだりもしました。
何らかの反応がありましたが、どういう処理をしたか解りません。
417の何処を読めば解るのでしょうか?
結局、ここまで悪戦苦闘してもどうしても出来ません!
Mod_perlのインストールごときでWeb設定の業者に設定を依頼する方ないのかな?
宜しくお願いします。
>>431 ActivePerl5.8.3とApache2.0.54はインストール済みだったので試しにmod_perlインストールしてみました
インストールまではスムーズに行ったけど同じくPerlRequireでcan't load perl fileと言われちゃいました
自分の場合はuse CGIで古いCGI.pmを読み込んでいたためでコレを削除して
C:/usr/site/lib/CGI.pmの方を読み込むようにさせたらエラーは出なくなりました。
とりあえずextra.plの内容を1行ずつ追加してどこでエラーになるか確認してみてはどうでしょう
433 :
432 :2005/05/24(火) 15:37:49 ID:???
>>431 自分の経験から考えたこと
ActivePerlが/usr/localにインストールしてあるのなら
/usr/local/libを/usr/local/lib_bakとかにリネームしたらどうでしょう(削除や移動でもいいんですけど)
多分/usr/local/libと/usr/local/site/libで同じpmが混在してるために不具合が起こっているような気がします。
434 :
432 :2005/05/24(火) 16:00:47 ID:???
435 :
432 :2005/05/24(火) 17:23:53 ID:???
>>431 ActivePerl5.8.6をダウンロードしてインストールしなおしてみました
結果ActivePerl付属のCGI.pmが古いためにエラーが起こっているようです
CPANからCGI.pm3.10をダウンロードして入れ替えたらOKでした
>>432 の言ったCGI.pmのバージョン依存を忘れていた・・・
ppmから入手出来るのは2.91なので、最新版の3.10をCPANからダウンロードして
その中のCGI.pmを
C:/usr/local/lib/CGI.pm(perlのパスがC:/usr/local/bin/perl.exeの場合)
のようにコピーする
面倒であればextra.plのuse CGI ();の行を削除する
(extra.plはモジュールをプリロードするためのスクリプトなので、
モジュールの読み込みのオーバーヘッドを防ぐ目的以外では必要ない)
それにしても
>>431 がmod_perl2を導入しようと思ったのは何故か気になる
437 :
nobodyさん :2005/05/25(水) 11:36:35 ID:C+b2OYt6
436さん>
CGI.pmの交換で、ようやくApacheの起動だけは出来る様になりました。しかし、それから先が進めません。
以下のスクリプトを作成して
#!C:/usr/local/bin/perl -w
#
http://localhost/cgi-bin/sr.pl use strict;
use vars qw ($D);
print "Content-type: text/html\n\n";
print "Hello \$ENV{'MOD_PERL'}=$ENV{'MOD_PERL'}:\$ENV{HTTP_USER_AGENT}=$ENV{HTTP_USER_AGENT}";
MOD_PERLが動くかどうか試したんですが、$ENV{'MOD_PERL'}に値が格納されないし
use strict;
use vars qw ($D);
が無い状態でも普通にブラウザに結果が表示され、どうみても普通のPerlの動きしかしません。
後、以下URLを元にHello.pm
http://perl.apache.org/docs/2.0/os/win32/config.html#Hello_World をC:/usr/local/bin/site/lib/Apache2に作成しhttpd.confにも、それが動く様追記したんですが、そうするとHello.pmがロード出来ないとうエラーログが記録されApacheが閉じてしまいます。
一体、Apacheが起動出来る様になった後、一体どの様にすればMOD_PERLとしての動作が確認出来ますか引き続きご教授宜しくお願いします。
尚、XSLoader.pmも最新Verに交換しました。
>それにしても
>>431 がmod_perl2を導入しようと思ったのは何故か気になる
自身、数百kbにも及ぶ大規模CGIシステムを作成してて、かなりの高アクセスを前提にしている事もありこれを
長期に渡りPerlで書き上げてしまい、PHPで動くCGIシステムが普及しているさなか、レスポンスが遅いと同種
サービスの競争に負けてしまいそうになると思い、PHPはPerlより簡単だと言われてるけどもやった事ないんで
、それを習得してPHPに書き直す作業を行えば、CGIを作るのに膨大な年月が掛かった上に更に膨大な期間が必
要になると思い、その解決策という思いついたのがMod_perlなのです。
>>437 cgi-bin内はCGIとして動作する設定なんじゃないの
.plをmod_perlとして設定してあるならcgi-binの外に出せば
>>437 Yahooの掲示板でお前なんかやめちまえって言われてた人か?
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1398764 のレスは放置かいな。
一応まじめにレスしておくけど数百kbにも及ぶ大規模CGIシステムとやらはmod_perlで動くように作られているの?
魔法の箱じゃないんでそれ用の記述をしないと真価を発揮できないし動くかどうかも怪しいと思うぞ。
それ以前にサーバーのチューニングのほうが先でしょ?
試しにMSWin32に入れてみたけど設定を変更しただけで既存のファイルは入れ替えることなく動いたので、全く動かなければあんたの使い方が悪い可能性が高い。
__PACKAGE__ => ModPerl::ROOT::ModPerl::Registry::C_略_cgi_2dbin_test_2ecgi
MOD_PERL => mod_perl/2.0.0
MOD_PERL_API_VERSION => 2
SERVER_SIGNATURE => Apache/2.0.54 (Win32) mod_perl/2.0.0 Perl/v5.8.6 Server at 127.0.0.1 Port 80
SERVER_SOFTWARE => Apache/2.0.54 (Win32) mod_perl/2.0.0 Perl/v5.8.6
440 :
nobodyさん :2005/05/25(水) 18:18:22 ID:C+b2OYt6
一週間私の為に付き合って下さりありがとうございます。
438さん>
はい、スクリプトをcgi-binからhttpd.confで指定したAlias /perl/ "C:/Apache2/perl/"と同じDirに
移し替えたら、Mod_perlとして動かせました。動かすまで一週間掛かりました。
439さん>
>
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1398764 のレスは放置かいな。
一応、回答が戴けてるので...焦ってた事もあり失礼だと思ってます!
>Yahooの掲示板でお前なんかやめちまえって言われてた人か?
それは、どのスレッドですか?
>一応まじめにレスしておくけど数百kbにも及ぶ大規模CGIシステムとやらはmod_perlで動くように作られているの? ..
私の作成したCGIシステムがそのままMod_perlで動くとは思ってません。Mod_perlに慣れてから、動く様に訂正
するつもりです。私はアパッチは今まで利用してなかったので熟知してないのですが、サーバーのチューニン
グというのはどの様にすればいいのでしょうか?ちなみに私も__PACKAGE__ 、MOD_PERL、SERVER_SIGNATURE 、SERVER_SOFTWARE は__PACKAGE__は空値でしたが439さんと同じ値が取れました。
でMod_perlでテスト用スクリプトを走らせて見ましたが以下の問題が起きました。
以下の様に変数をインポートしても初期化されずブラウザをリロード毎に$Dが追加算される。
strict.pm&var.pmは変数の使用許可するだけの役割
#!/usr/local/bin/perl -w
use strict; use vars qw ($D);
$D+=5;
だから、自分で変数を初期化するルーチンを作りました。
sub EZ{my($s); for($s=0;$s<@_;$s++){$_[$s]="";}}
以下の様にライブラリを読み込んだらライブラリにpackage宣言されてもサーバーエラーになる。
require "as.pl"; &as::pre($D,$S);
後、MOD_PERLの場合、ライブラリへのpackage宣言は避けられないんでしょうか?
宜しくお願いします。
441 :
nobodyさん :2005/05/25(水) 21:36:48 ID:C+b2OYt6
440の続き ライブラリの事 PCでライブラリをrequireする際は、require "C:/Apache2/perl/as.pl";の様な フルパスが必要でした。 バーチャルホスト設定でブラウザ実行の際、エラーログが取れる様になり解りました。 Mod_perl2.0でのライブラリへのpackage宣言は強要されてませんでした。 package宣言が嫌なら宣言不要です。 それにしてもMod_perlのブラウザテストて、メモリにスクリプトや変数値が 常駐するので、いちいちアパッチを起動しなきゃならなくて面倒ですね!! でもライブラリがパッケージ化不要で使える事をしり、いささか実用化の希みが出ました。
>>440-441 ・パスは絶対パスで(相対パスだとApacheのディレクトリ)
・変数の初期化にはmyを使う(varsはグローバル変数を指定する別物)
・ModPerl::RegistryのスクリプトやApacheハンドラは常駐が当たり前
mod_perlはスクリプトがクリーンなコードでないと凶器になります
先頭パスに-wを指定するとエラーログが相当なものになります
>>437 と
>>441 の内容からしてOOPという概念がなくて、スクリプトの保守が大変そうだな、と思った
とういうか、この程度の理解でmod_perlを使うとは・・・
444 :
nobodyさん :2005/05/25(水) 23:01:15 ID:C+b2OYt6
442、443さん> 外部でmy宣言した変数、配列はライブラリ先のサブルーチンまで引き渡せない。 で、変数は sub EZ{my($s); for($s=0;$s<@_;$s++){$_[$s]="";}} でどうにか初期化が簡潔的に出来る。 my($A)の代わりにEZ($A,$B)にすれば初期化された$Aでライブラリを越えてどこにでも 値が届く。 でも配列は以下のルーチンを試して見ましたが駄目でした。 EA(AB,CD); sub EA{my($s); for($s=0;$s<@_;$s++){@$_[$s]=();}} PUSH(@AB,'A'); PUSH(@CD,'B'); mod_perlはよほどの知識がないと使うとやばいですか? やっぱ、普通のPerlでサービスにトライする他ないんかな、スピードはサーバー の環境に期待する他無い!!
>mod_perlはよほどの知識がないと使うとやばいですか? というより、perl自体の知識が無いようなのでね・・・。 多少意識して書けば、cgi→mod_perlの移行は、 難しくないのになぁ。 しかも、mod_perlはapache1つじゃきついとおもうよ。
いやー、人間って、一度自分で痛い目に合わないと、 コードをクリーンに書くことの意味に気づかないと思うよ。 でまあこの人はまさにその渦中にいると。 >EA(AB,CD); >sub EA{my($s); for($s=0;$s<@_;$s++){@$_[$s]=();}} >PUSH(@AB,'A'); >PUSH(@CD,'B'); >mod_perlはよほどの知識がないと使うとやばいですか? これはひょっとしてシンボリックリファレンスを使おうとしている? だとしたら、かなりやばい。
447 :
nobodyさん :2005/05/26(木) 10:44:11 ID:/bJEfdxI
445、446さん> Perlの利用暦は5年以上ですが、自身コードをクリーンに書く方ではないので 上級レベル迄には達してないと思います。 でもキャリアが長いので、Perlに関してはある程度ペラペラです。 沢山の大規模CGIをPerlで書いて来ましたが、気がつけばPHPの時代という憂き目に会って しまってます! mod_perlは慎重に使わなければいけませが、折角出合ったので初心に返って習得して 実用出来る様にしたいです。 変数、配列の一括初期化の方法は関数作らず共、こんなに簡潔に出来ました。 ($D,$S,$Z)=""; (@vet,@popron,@btys)=(); これでmy宣言による使用域の制約から逃れられます。
449 :
nobodyさん :2005/05/26(木) 14:15:01 ID:/bJEfdxI
448さん> 痛いトコ付きますね! 2つの質問については正直不案内でした。 ourで変数を宣言してもMod_perlにては初期化されませんでした。 mod_perlは勉強する点が色々ありますね! Perlがスラスラ書けると思い上がってました。 本の紹介どうもありがとうございます。 ついでに use vars qw ($D $S $Z $SP @popron @vet @btys %in %rt); ($D,$S,$Z,$SP,@popron,@vet,@btys,%in,%rt)=""; の様に同じ配列が2つあるけど、それではスクリプトが複雑になるので以下みたく @LIST=qw \($D $S $Z $SP @popron @vet @btys %in %rt); use vars qw(@LIST) @LIST=(); の様に配列名にパックして綺麗に書いて実行したいけどどの様にすれば宜しいでしょうか? 上の@LISTを使って実行しましたがエラーでした。
>>449 あのさ、ここサポセンじゃないんで、ヨソに行ってもらえないかな。
日本語版はないの?
453 :
nobodyさん :2005/05/26(木) 21:12:00 ID:/bJEfdxI
448さん紹介のオライリーの「Apache拡張ガイド(上)」、大書店で確認して来ました。 でも¥4,800もするのでは!!(汗) どうしようか迷ってます。 でもMod_perlを使うには、それなりの勉強が必要だし、買おうか買うまいか? でも折角だからMod_perl極めたいです。
なんかRegistryBBつー最強の掲示板が内蔵されたらしい。 RegistryPreforkはちゃんと使えんのかね?
ModPerl::RegistryBB - Run unaltered CGI scripts persistently under mod_perl "ModPerl::RegistryBB" is similar to "ModPerl::Registry", but does the bare minimum (mnemonic: BB = Bare Bones) to compile a script file once and run it many times, in order to get the maximum performance. Whereas "ModPerl::Registry" does various checks, which add a slight overhead to response times.
>>453 申し訳ないけど、多分、mod_perlうんぬんより、
perlの方をどうかした方がいいんじゃないのかな、、
use strict;で動く?
-wTでエラーでない?
457 :
nobodyさん :2005/05/27(金) 11:28:17 ID:UfO/Wu7H
456さん> >申し訳ないけど、多分、mod_perlうんぬんより、 >perlの方をどうかした方がいいんじゃないのかな、、 >use strict;で動く? >-wTでエラーでない? -wと変わりません。 use strict; use vars qw ($D $S $Z $SP @popron @vet @btys %in %rt); ($D,$S,$Z,$SP,@popron,@vet,@btys,%in,%rt)=""; でMod_perl2.0は動作します。 後、exit;も使えます。 やっぱり、1週間掛かりで自分の手でMod_perlは動かせるようになったんだし、それなりに 興味が沸きました。 Mod_perlを是非学び極めたいです。 そうする事により、スクリプトを綺麗に書く自覚が芽生えて来ると思います。 投げたら何も進歩がありません!
mod_perl で失敗しないスクリプトを書くために洩れが心がけていることとしては ・use vars は @ISA など一部の例外を除いて一切使わない ・全ての変数を my で宣言する ・スコープ外の変数をいじるときはハードリファレンスで参照渡しする ・変数がいつ消滅するかを明確に意識する
>>457 分かったからヨソでやってくれない?
ウザったいと感じてる人間が少なからずいるんだから。
460 :
nobodyさん :2005/05/27(金) 13:00:56 ID:UfO/Wu7H
459さん> Mod_perlのスレッドでMod_perlに関する話題を書き込んで何がいけないんですか? 納得に行きません!
いや、 mod_perlというより、perlの話題(質問)でしょ。 それも、かなり基本的な、、 多分、perl4の人なんだろうけど。
>>459 大変申し訳ありませんがウザいのでヨソいってください。
use strict; use warnings; use sigtrap; # use diagnostics;
465 :
nobodyさん :2005/05/27(金) 17:54:10 ID:UfO/Wu7H
Mod_perlにてテスト結果でこういう事が分かりました。 use strict; my($D,@popron,%in); の様に外部でMY宣言してもMYの有効範囲はあくまでもその宣言のあるスクリプト内。 よって、requireでロードされてるライブラリではグローバル変数のままの為 変数の初期化がされず値が増えてしまってる事が判りました。 やっぱ、以下のだと変数の完全初期化が果たせました。 use strict; use vars qw($D @popron %in); ($D,@popron,%in)=""; 何故、Mod_perlの初期化にmyで書くんだろう? PS:この話題はMod_perlの事言ってるので、反感を買う筋合いは有りませんよね!
>>465 my は変数を宣言するものであって、初期化してくれるわけではない
>>465 Apacheのサイトのドキュメントぐらい読んだらいいよ
mod_perl1.0の方からね
my と ourの違いとか
>>465 リロードしてわかるmyとourの違い
#!/usr/bin/perl -w
use strict;
print "Content-type: text/plain\r\n\r\n";
my $counter = 0; # Explicit initialization technically redundant
#our $counter = 0;
for (1..5) {
increment_counter();
}
sub increment_counter{
$counter++;
print "Counter is equal to $counter !\r\n";
}
469 :
nobodyさん :2005/05/27(金) 20:51:38 ID:UfO/Wu7H
468> my $counter = 0; #our $counter = 0; でやったら increment_counter(); 内の処理が最初の1回だけ処理若しくはスクリプトを修正して1回目だけ なされて、それ以降はスルーでした。よってスルー後の$counterの値は0でした。 逆にourを有効にさせればあらゆる$counterが追加算され値が増えていきます。 つまりmy宣言とour宣言の同名の変数は別物であり、ourはグローバル変数そのもの
Perl の勉強は他のスレでやろうよ。 ModPerl 以外の話題でスレが流れるのはカンベン。
471 :
nobodyさん :2005/05/27(金) 23:09:19 ID:UfO/Wu7H
470> 私は、468の質問に回答しただけです。 Perlの勉強といってもMod_perlと関連性が非常にある訳ですか、それならココを 使っても問題ないでしょう? Mod_perlを語るにPerlのプログラミングで説明する事は欠かせません! 469もMod_perlにてこのプログラムはどう動くかを述べてるのでMod_perlと大いに 関連があり、よってココを使っても攻められる筋はないと存じます!
print 'バグってるぞ__END__このやろう';
普通に__END__が使えるようになったのかと思ったらこれがエラーになるってどういうことよ。
>>471 こんなところで油売ってる暇あったらPHPでも覚えれば?
ここにいていいのはPerlの基礎が分かってる人だけ。 ここでアホな質問続けてるやつはmod_perl以前の問題やん。
>>470 >>468 はPerlCGIとmod_perlで動作が違うので注意が必要といいたかったんです。
475 :
nobodyさん :2005/05/28(土) 10:34:31 ID:xzv7Jv78
472、473> Perlはある程度判ってるつもりです。5年以上もやって来たので。 私は、確かに常識が薄い人間ですが、ココではMod_perlで利用するというモラル を心がけて使わせた戴いた結果がこの結果(攻められる)になりとても自分が悔しく 感じてます。 どうして、心がけて使いながら邪魔者にならなければいけなのか? mod_perlだってperlの1つなのです。 で、471でもいいましたがmod_perlを語るにPerlは欠かせないんです! 1週間も素人の私の為に付き合っていただき、正直断念の1歩手前迄来ていたのが mod_perlを動かせる様になったんです。 それは大変感謝しております! mod_perlの設定は、一筋縄では行かないので、何度も有識者に尋ねて進めなければ ココまで辿り着けなかったと思います。 ユーザの少ないmod_perlの議論が出来る様な所は他には見当たり難く、その為にも ココの掲示板でのコミュニケーションが必要です。 この様な結果になってしまいましたが、どうか、そのモラルを心がけてココを使わせて 戴いた事だけは理解して戴きたいです。 今後も更にMod_perlを極めたいのでココを利用させて戴きたいです。 どうか宜しくお願いします。
476 :
nobodyさん :2005/05/28(土) 12:06:30 ID:DRXi0Wgp
だってここ2ちゃんねるだもん
>>475 5年はさすがに嘘だろ。せいぜい1ヶ月ぐらいしかやってないレベル。
mod_perlを極めたいなら、まずPerl自体を知らないと無理。
というか「mod_perlを極める」の意味が分からんな。
>>465 のようにmyすら知らないのはPerl自体まともに書けないから。
myはmod_perl専用のキーワードではないわけだし。
他の人も言ってるが、まずPerlをまともに書けるようにならないと無理。
mod_perl特有の注意点を教えたところで全く理解できてないじゃないか。
いや、「KENTを参考に5年勉強しました」だったらあり得る話だと思ふ。 まじめな話だが、グローバル変数をパッケージ名修飾で参照したり シンボリックリファレンス使いまくったりとかなヌルいコードでもとりあえず走ってしまう、 てのが Perl の利点なのかもしれないが欠点でもあって、 困ったことに「ヌルさを極める」方向に走ることを「Perl上級者になった」と思っている人も少なくない。 でまあ、一度痛い目にあってようやく気づくわけだ。 mod_perl がその痛い目の代表例だろうと。 Blosxom の作者である Rael も「mod_perlで動かない」という事実に直面して初めて反省したみたいだし。
まずあの分厚いオライリー読んでから出直してこいと
481 :
nobodyさん :2005/05/28(土) 17:46:53 ID:xzv7Jv78
> どうして、心がけて使いながら邪魔者にならなければいけなのか? 無能だからだよ。 どれだけ勉強したって、免許持ってなかったら車は運転できないだろ? 対人コミュニケーションも大切だけど、技術的なコミュニケーションも 取れないんじゃウザがられてもしょうがない。
>>481 >>479 の「パッケージ名修飾」「シンボリックリファレンス」の言葉の意味分からないだろ?
それを質問するのはここじゃない。perl初心者スレに行け。
これだけスコスコに叩かれて、モラルも糞もあったもんじゃないなw 空気が読めない奴は、それだけで犯罪だよ。
まあ、オライリーの本読んでそれじゃ、 理解できてないじゃないか! と、おれはいいたい。
486 :
nobodyさん :2005/05/28(土) 21:14:27 ID:xzv7Jv78
482~485> >無能だからだよ。 >対人コミュニケーションも大切だけど、技術的なコミュニケーションも >取れないんじゃウザがられてもしょうがない。 新しい事を知るには、最初は初心者、知識もほとんどありません! Mod_perlを極めたくても最初は無知なのです。 ましてはあまり流行ってないMod_perlを知ってる人は数少ないし、Mod_perlのページを 見ても自力で覚えられるに限度があります。そして、Mod_perlの議論が出来る掲示板なんて ここ以外どこにありますか?! Mod_perlの知らない人間がその事を学びたく、問答して何が悪いんですか? Perlも5年以上やってきましたので、確かに私は書き方が荒く、周りからみればPerlの 書き方が未熟と思われても致し方ないと思いますが、ここまで経験があるし、自己主観 ですがPerlの腕前を見てみても、Mod_perlを試してみてもいいレベルには達していると思います。 >「パッケージ名修飾」「シンボリックリファレンス」の言葉の意味分からないだろ? これらは知ってます。 確かに掲示板の空気は読むのは苦手です。 改めて申しますが、モラルを意識して書き込んだ事だけは理解して下さい。 これで邪魔者扱いされる様ななら、ここの掲示板は不親切過ぎると思います。 空気の読み方や技術的なコミュニケーションは、ココでの事の様に簡単ではない場合も あります、あからさまにウザがる以前に少し親切な扱いをされてもいいのではと思います。 これだけ反論、自己の事情と利用した際の態度を述べました。 どうかココの掲示板の議論に今後とも参加させて下さい!
そーやって人の話もロクに聞かず、他人の手柄を自分のものにしてしまうような態度だから会社クビになるんでしょ。 大体なんでそんなにmod_perlにこだわるのさ。 起動するたびに大きなファイルを丸ごと読み込むようなことしてたらmod_perlなんか意味無いよ?
>>486 他人の話を聞かない奴が議論できるとは到底思えないが?
>Mod_perlを極めたくても最初は無知なのです。
mod_perl云々の前にPerl自体が初心者レベルなのだから、まずPerlの基礎をやれと言っとるんだ。
それができれば自然にmod_perl化できる。というかPerlとmod_perlを別言語だと思ってないか?
Perlがちゃんとできればmod_perl化に苦労はいらない。それができないってことはPerlができてないんだ。
大漁だなw
暑くなってきたんでビール飲みながら見ると、すごくいい質問に見えてくるんだなぁこれが。
491 :
nobodyさん :2005/05/28(土) 23:27:54 ID:haTNBXhi
大漁大漁言わないでください!
なんか自分用の「パソ」を10台持ってるからパソコンに詳しい みたいな奴だな。
493 :
nobodyさん :2005/05/29(日) 11:45:03 ID:LobLqbIr
そんなこと言わずに、参加させて下さい!
部分的 GET(Range) で困っています。 たとえば単純に、 $vi test.cgi ----- #!/usr/bin/perl use strict; use Apache::RequestRec (); use Apache::Const qw(:common :http); my($r) = shift; # $r = Apache2::Apache::RequestRec Object my($headers_out) = $r->headers_out; $r->status_line('206 Partial Content'); $r->status(HTTP_PARTIAL_CONTENT); $headers_out->{'Accept-Ranges'} = 'bytes'; $headers_out->{'Content-Length'} = '10'; $headers_out->{'Content-Range'} = "bytes 0-9/10"; $r->content_type('text/plain'); $r->print("0123456789"); return(OK); ----- $chmod 755 test.cgi Telnetで $telnet localhost 80 GET /cgi-bin/test.cgi HTTP/1.1 Host: localhost Range: bytes=0-9 とすると、レスポンスが
続きです。
-----
0123456789<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>206 Partial Content</title>
</head><body>
<h1>Partial Content</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
[email protected] and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>
Connection closed by foreign host.
-----
のように、データの後にエラーのHTMLが吐き出されてしまいます。
error_log は LogLevelを debug にしても何も書き出されませんでした。
済みません。 更に続きです。 ちなみに、$r->status() を $r->status(HTTP_OK); にすると正常?に動作はしますが、ステータスが 200 なので、 約束違反のようで心配です、 まさか、mod_perl はステータスを 206 にするとエラー扱いされる、 または使えないのでしょうか? それとも、根本的にやり方がおかしいのでしょうか。 mod_perl を使わないで以下のソースで動作させると問題ありませんでした。 ----- #!/usr/bin/perl use strict; print "Status: 206 Partial Content\n"; print "Accept-Ranges: bytes\n"; print "Content-Length: 10\n"; print "Content-Range: bytes 0-9/10\n"; print "Contet-Type: text/plain\n\n"; print "0123456789"; ----- Apache/2.0.52 + mod_perl/1.99_16 + Perl/v5.8.0 の環境です。 長々と失礼致しました。 何かヒントを頂ければ幸いです。 よろしくお願いします。
HTML 2.0って。。。
>>497 Apache 標準のエラーページが HTML 2.0 なだけだが。
windows の apache2 + mod_perl2 でちょっと使って見たんだけど…。
mod_perl2 配下で動かしたスクリプトのカレントディレクトリが
apache2 のホームになるのを何とかしたいんだけど、方法解る人いる?
できれば、スクリプト起動時にそのスクリプトが置いてあるディレクトリに
移動させたいんだけど
あと、インストールの時、ここを見ながらインストールしたんだが
ttp://multix.jp/html/memo/030524.html (トップページ見るとチョットひくがw)
このページの start.pl の2ヶ所が俺の環境だと動かないからコメントアウトしたんだけど
use Apache2 ();
use ModPerl::Util ();
use Apache::RequestRec ();
use Apache::RequestIO ();
use Apache::RequestUtil ();
# use Apache::Server (); ← 動かない
use Apache::ServerUtil ();
use Apache::Connection ();
use Apache::Log ();
use Apache::Const -compile => ':common';
use APR::Const -compile => ':common';
use APR::Table ();
# use Apache::compat (); ← 動かない
use ModPerl::Registry ();
use CGI ();
これって、俺の mod_perl2 がオカシイって事だよね。何処から持ってくればいいんだろう…。
>>499 本家のドキュメント見た方がいいと思う
tp://perl.apache.org/docs/2.0/os/win32/config.html
モジュールはCPANから
501 :
494 :2005/06/11(土) 15:11:32 ID:???
自己解決。 Apache API ではなく、CGI.pm を使えば問題ないみたいです。 ----- #!/usr/bin/perl use strict; use CGI; my($q) = new CGI; print $q->header(-type => 'text/plain', -status=>'206 Partial Content', -accept_ranges => 'bytes', -content_length => '10', -content_range => 'bytes 0-9/10'); print "0123456789"; ----- CGI.pm なので重たくはなると思うけど、mod_perl を使わないよりは 比べ物にならないくらいマシなので、これでいきます。 それにしても・・・API の使い方が間違っているのかな?
mod_perl2は仕様がまだコロコロ変わってる希ガス。 Apache2.pmも無くなったよ。
503 :
nobodyさん :2005/11/24(木) 18:30:18 ID:5fWGjQ1L
mod_perl1.99(=2という感じでしょうか?)についてお聞きしたいのですが、 ModPerl::Registryな環境で動作させた場合、以前の Apache::Registryとは、結構違う感じなのでしょうか? 動作しない場合もコードによって出てきそうな気が・・・。 ご存知の方、アドバイスお願いいたします。
下位互換を高レベルで保ってるから以前と変わらない動作で動くよ。 Apache::reload辺りが変更になってハマった記憶があるけど。
505 :
503 :2005/11/26(土) 01:05:31 ID:???
>>504 情報ありがとうございます。なるほどそうでしたか!
今、Apache2.0 + mod_perl1.99な環境を作っています。
特に、CatalystやCGI::Applicationの動作が問題ないか
気になっていました。
506 :
nobodyさん :2005/11/28(月) 21:12:47 ID:c6nvYUNh
先生教えてください! mod_perlには CGI::Session Apache::Session どちらを使うのが効率良いのでしょうか?
507 :
nobodyさん :2005/11/30(水) 17:44:26 ID:s8bRu2i2
放置されてて可愛そう・・・
だって、ベンチマーク取らないとわかんないしさ・・・。 それくらいだったら自分で取ってみたら?って事で。 他のモジュールとの相性もあるだろうし。 おれはCGI::Applicationをよく使うから、CGI::Sessionの ラッパーのプラグインを使ってるけど。
510 :
nobodyさん :2006/01/02(月) 11:18:27 ID:LIsIGKJ1
スレをざっと呼んだ感じ、 use strict でエラーが無ければ mod_perl に修正無しで動くとは限らない という認識で OK ですか? 逆に、 mod_perl 使っててエラーが無ければ、mod_perl 環境外で修正無しで動く もんなんでしょうか?
>>510 どっちでも修正は必ずいるよん。
修正する必要がないように作ってあるものはmod_perlの恩恵を受けられないよん。
そお? 両対応で書いてるけど。
重いインタプリタ言語をアパッチと連動させるなとは思う。 アパッチが性能向上に励んでいるのに足引っ張りまくり。 mixiがmod_perl使ってせいで重いのは当然だな。 試しに作る分にperlはありだけど、運用するならもっと軽い実装方法とか共同鯖なら実行プロセスのセキュリティのことを考えた方がいいよ。
>513 このひとPerl vs Ruby vs Python vs PHPスレにも居たJava厨?
ワロタ
セキュリティを考慮するならBIG_SECURITY_HOLEフラグ(矛盾orz) apacheを肥大させたくないのならfastcgi 少人数でコストを抑えて速度を求めるならmod_perlはグッドチョイスだと思うよ
ミクしのソースが実行されずに表示されてしまうのはなぜ? エロイ人教えてくれ。
実行する設定になってないから
mod_perlをダブルクリックしてない悪寒。
Perl-CGIとPHPを経験してきたものです。
今回、mod_perl2 に手を出してみようと思ったんですが、
mod_perl2 はおろか mod_perl1 も初めてです。
Apache2 を使う都合上、mod_perl2 で開発になるんですが、
色々とサイトを調べても mod_perl2 の情報は少ないのですね…。
みなさんはどこで mod_perl2 の勉強をされたのでしょうか?
というかその前に mod_perl から勉強した方がいいというオチ!?
mod_perl の 2 と 1 の違いもあまりわからない初心者ですが
何か有益なサイトがありましたら教えてください。
とりあえず
http://perl.apache.org/docs/1.0/guide/porting.html で mod_perl1 を学んで、
http://modperlbook.org/html/part5.html で mod_perl2 を知ろうかと思ったんですが
英語なので早くも挫折しそうです ^^;;;^^;^;^;^^
ふつーに Catalyst を mod_perl なり fastcgi なりの下で使ってろ。
情報が少ないって、たいてい本家のドキュメントで事は足りるわけだが。
525 :
nobodyさん :2006/02/17(金) 02:16:31 ID:XCO/AQtb
英語が読めないお馬鹿ちゃんにそういうこというと可哀想では?
>>522 日本語情報が欲しいなら、オライリーのApache拡張ガイドを買った方がいい。
ただ内容がmod_perl1だから、2については本家ドキュメントを読むしかないね。
1と2は結構違うけど、単にRegistryで動かすんなら、
変更があったPerlハンドラに気をつければ、1と大して変わんないよ。
527 :
522 :2006/02/21(火) 18:55:01 ID:???
>>523-526 レス有難うございました。
あれから色々と調べていますが、
mod_perl1 の文書と mod_perl2 の文書を
行ったりきたりで結構混乱してます。。
(ハンドラがよくわかってないです)
そもそも post/get 関わらずクエリを取る場合、
どのやりかたが一般的なのでしょうか?
1. CGI.pm
2. Apache2::Request;
3. Apache2::RequestRec (これはpostが取れない??)
また、ファイルのアップロードを受け付ける場合は 1, 2 だけ??
Apache関連モジュールを使わなくても
CGI.pm で普通にコーディングしたら動いたので、
そのままCGIを組むように作ってもmod_perlの温床に預かれるのでしょうか。
両対応にしたいからCGI.pm使ってる。 恩恵があるかどうかは、CGI.pmのソース見てみればわかるよ。 バージョンが古いとだめかも知れないけどね。
529 :
527 :2006/02/21(火) 20:42:11 ID:???
>>528 最新の CGI.pm は mod_perl 環境かどうかで
切り替えて use してますよね。
CGI.pm を使って普通に strict なソースを組めば
(プログラムのパスなどの注意は別として)
問題なく mod_perl2 が使えるって考えで正しいでしょうか?
変に難しく考えすぎてたのかな…
Apache2の設定も
<Files *.pl>
SetHandler perl-script
PerlHandler ModPerl::Registry
Options +ExecCGI
PerlSendHeader On
Order allow,deny
Allow from all
</Files>
この程度です。
530 :
529 :2006/02/21(火) 22:06:48 ID:???
数箇所mod_perl1の書き方があったので訂正です。 PerlModule ModPerl::Registry PerlModule Apache::DBI #PerlModule CGI PerlRequire /var/www/lib/startup.pl <Files ~ "\.pl$"> SetHandler perl-script PerlResponseHandler ModPerl::Registry Options +ExecCGI PerlOptions +ParseHeaders </Files> いろんなサイトにはExecCGIも書いてあったのですが、 この場合不要ですよね…
確かに書いてた。
http://perl.apache.org/docs/1.0/guide/config.html > The Options directive accepts various parameters (options),
> one of which is ExecCGI. This tells the server that the file is
> a program and should be executed, instead of just being displayed like
> a static file (like HTML file). If you omit this option then
> the script will either be rendered as plain text or else it will
> trigger a Save-As dialog, depending on the client's configuration.
調べてみたけど、出力したものをHTMLとみなすために(?)一応、要るのだと思う。
532 :
530 :2006/02/23(木) 16:34:46 ID:???
>>531 有難うございます。やっぱり必要だったのですね…。
コメントアウトしても動いていたので不要なものなのかと思っていました。
ちなみに mod_perl2 で使うモジュールについてなんですが、
ドキュメントで PerlModule と PerlRequire が同義であると知りました。
なので、PerlModule を使わずに全部 startup.pl 内で定義しようと思ったのですが、
use strict; use warning; の定義については効果ないのですね。
(どのスクリプトでも my 使わない変数が使えてしまいました)
CGI.pm とかは、スクリプト内で use CGI; しなくても使えたのですが。
それと、mod_perl2 で使われる標準モジュールがよくわからないのですが、
Apache2.pm は必ずしも必要なのでしょうか?ModPerl::Registry, CGI.pm だけで動作しているのですが、
サイトによっては use Apache2 が必要と書いてあったりします。
(使いたいのは、基本的な関数(exitなど)やサーバ環境変数程度ですが、現状問題なく動いてます)
(CGI.pm あれば事足りるって感じなのかな)
また、exit 関数が自動で ModPerl::Util::exit に割り当てられているようですが、
その場合は use ModPerl::Util; しなくてもいいのでしょうか?
うーん。。アホな質問ですんません。
【環境】
OS: CentOS4.2, Perl: 5.8.5, Apache: 2.0.52, mod_perl: 2.0.2
Apache2APIを使わなければ、別にApache2.pmを使わなくてもいいんじゃないかな。 exit関数は、昔はCGI.pmに定義されてたこともあったけど、 今はどうなってるのかさっぱり。 ドキュメントも無いし…。
mod_perl の API を細かく知る必要ってどこにあるんだろう。 何らかのフレームワークに乗っかればいいだけやん。
まずインターネットの規格とか、OSのAPIを細かく知る事から始めないと後で困るんじゃね?
mod_perl で Apache::DBI を使わない場合、 最後にちゃんと $dbh->disconnect(); しないと危険?
538 :
537 :2006/03/01(水) 17:26:08 ID:???
>>537 に追記
最初にDBにつないでデータ取ってきてそれをごにょごにょやって
ある条件のときにリダイレクトなりエラーなりをさせたときに、
その前にDBを disconnect するのを忘れちゃうんですよね
>>537 危険つーか、新しくユーザからリクエストがある度にコネクションを開いて
そのままになったら、いつかは DB 側の限界が来てエラーになる…かも。
自前でコネクションプーリングしてれば別だけど、disconnect() しとけば?
> その前にDBを disconnect するのを忘れちゃうんですよね
……。
541 :
537 :2006/03/01(水) 20:28:51 ID:???
>>540 ですよね…
ちなみに、mod_perl + DBI のときは PrintError と RaiseError はどうしてるんですか?
RaiseError => 1 に関わらず、DB接続後にdieされたときには
mod_perlでも自動でdisconnect されるんでしょうか?
…であれば、die しているところでは明示的にdisconnect不要ですよね
ん?$dbhのDESTROYが動けば閉じてくれるんじゃなかったっけ? dieで閉じるのも変数のスコープから外れてこれが動くだけでしょ。
>>542 DBI のマニュアル読んできた。デフォルトでは DESTROY が動けば閉じてくれる
ようだ。InactiveDestory => 1 だと DESTROY でも閉じないようだよ。
スコープから抜けたりして DESTROY が動けば閉じられるけど、mod_perl 下では
そうじゃないケースも簡単に作れてしまう。
やっぱり disconnect() するか Apache::DBI を使う方がいいと思う。
> ちなみに、mod_perl + DBI のときは PrintError と RaiseError はどうしてるんですか?
エラー受けたら再試行やロールバック。
ユーザにごめんなさいするページを表示して管理者にメール。
ログ見てデバッグ。
mod_perl + DBI では disconnect() は自分でやらないと危険ってことですね。 Apache::DBI を使えば、例えperlのソースに disconnect() があってもそれは何もしないってマニュアルで見ました。 ってことは apache のプロセスが終了したときに自動で disconnect() されるんかな? 一度、Apache::DBI で組んでたんですけど、コネクションがいくつか立ち上がってるときに、 コマンドラインでテーブルを drop しようとすると、何もエラーが出ずに返ってこなくなりました。 恐らく drop する時にはそのテーブルを参照しているコネクションが閉じられてないとダメなんでしょうね。 (apache を再起動してコネクションを開放したらdrop できました。) ただ、レコードの追加・更新・削除はコネクションあっても問題なくできて、 apache 側でも更新されたレコードはすぐに参照できたんですよね。 その辺がしっくりこなくて、Apache::DBI を使うのをちょっとやめようかなという気になってしまってました。 でも逆に DBI を使うと、ちゃんと disconnect() しないとコネクションが張られ続けるって問題が… (エラーチェックはどっちにしてもちゃんとやれってことですね。)
>>544 > コマンドラインでテーブルを drop しようとすると、何もエラーが出ずに返ってこなくなりました。
……。
546 :
544 :2006/03/02(木) 16:47:20 ID:???
>>545 なんか不慣れ丸出しですんません。
最初コネクションが原因だとわかるのに数時間はまりましたw
Webを放置すると、同じテーブルを再構築したりしたのに現象がおきなかったので。。
(そりゃ、コネクションの問題であれば一定時間経過しちゃえば現象なくなりますわ)
とりあえずApache::DBI使ってdisconnectをまかせてみます。
mod_perl2+Apache2::Reload+Class::DBIで開発してると たまにソースを変更した箇所が反映されていなかったりエラーが出たりして 結局htttpd自体をリロードするハメになってしまいます これを回避する方法はありますか?
よくわからないエラーが出たので質問させてください。 { my $hoge; } my $hoge; のようなことをやると、以下のエラーが出たり出なかったりします。 Can't use global $0 in "my" at (eval 114) line 1, near "local $0 " BEGIN not safe after errors--compilation aborted at xxx.pl line xx. ※line xx の行は「use strict;」 と書かれています。 mod_perl ではたとえブロックが違っていても、 同じ変数名は my で定義できないのでしょうか?
>>547 mod_XXXで開発はよしたほうがいいかも
そりゃhttpdがplスクリプト読み込んでキャッシュしてるからね。 理解出来ないならおまいにmod_perlは無理。業者に丸投げしとけ。
まあアパッチにも詳しくないとスクリプトは書けませんよと。
アパッチの事も勉強できるCGIの本とかありますか?
つーかアパチも詳しくないウェブPGはゴミ。 アパチと一心同体なのにな。 サービスによってはmod_xxx書いた方がいいし。
薄っぺらな書き込みはスルー汁
fedoracore4でapache2とmod_perl2を使ってますが GATEWAY_INTERFACEにはCGI-Perlと値が入るようですが入りません。 ですが、MOD_PERLは定義されています。 confで指定したパスで今まで使ってたcgiがそのままでは動かなかったんで修正したら動きました。 こんなもんです?
http://42c.no-ip.org/manual_for_install_mod_perl.html > MP_COMPAT_1X
> MP_COMPAT_1X=1 or a lack of it enables several mod_perl 1.0 back-compatibility features, which are deprecated in mod_perl 2.0. It's enabled by default, but can be disabled with MP_COMPAT_1X=0 during the build process.
> When this option is disabled, the following things will happen:
> Environment variable GATEWAY_INTERFACE will be enabled only if PerlOptions +SetupEnv is enabled and its value would be the default:
> CGI/1.1
> and not:
> CGI-Perl/1.1
> The use of $ENV{GATEWAY_INTERFACE} is deprecated and the existance of $ENV{MOD_PERL} should be checked instead.
> MP_COMPAT_1X
> MP_COMPAT=1若しくはmod_perl1.0のバック互換性仕様の有効性が欠如するとmod_perl2.0には受け入れられません。デフォルトによって使用かのうですが構築中MP_COMPAT_1X=0によって使用不可となります。
> この条件が使用できないと次ぎのことが起こります。
> 環境変数GATEWAY_INTERFACEはPerlOptions +SetupEnvが使用可能でありその値がデフォルトのみにときに使用可能となります。
> CGI/1.1
> and not:
>
> CGI-Perl/1.1
> $ENV{GATEWAY_INTERFACE} は使用できません。そして代わりに $ENV{MOD_PERL} の存在がチェックされます。
PHP5.1って、処理系としての速度が上がるという触れ込みだったけど、 ModPerl::Registryとの速度比較した人います?
なんでわざわざ ModPerl::Registry と比べるんだよ。
VirtualHostで2つのサイトがあるときに、 サイトによってDBの接続先を変えたいと思ってます。 (両方とも同じスクリプトでDB接続先だけが違う) この場合、うまいスクリプトのまとめかたはありますでしょうか? 理想としては、1つの外部ファイルにそれぞれのDB設定を まとめて書いておいて、%ENV等の環境によって 使う変数を切替えるのがベストですが、mod_perl なので 外部ファイルは最初に全部キャッシュされてしまい、 どちらのDBにつながるのかがランダムになってしまいます。
ユーザを分ければいいじゃん。アフォ? レン鯖でランダムになる訳ないだろ。
565 :
nobodyさん :2006/03/31(金) 13:32:23 ID:0vIICn80
566 :
563 :2006/03/31(金) 20:48:23 ID:???
>>565 そんなオプションがあったんですね…
勉強になりました。ありがとうございます。
567 :
nobodyさん :2006/04/05(水) 12:28:55 ID:Dfw/T+uQ BE:227849-#
mod_perlとspeedyのベンチマークを比較してるサイトとかないですかねぇ、、?
( ^ω^)
569 :
nobodyさん :2006/04/05(水) 15:52:23 ID:??? BE:496760459-
ググレカス
570 :
nobodyさん :2006/04/05(水) 17:00:35 ID:Dfw/T+uQ BE:510899-#
ぐぐったんですが、見つからなかったのです。
一部の板をmod_perlで動かしてみて、 負荷を計測みればいいのでは。
573 :
nobodyさん :2006/04/06(木) 04:58:50 ID:tBrrkYYU BE:76043-#
そうするとbuggyなmod_perlを使うメリットってなんなのでしょう?
どこら辺がbuggyだと思う?
576 :
nobodyさん :2006/04/06(木) 20:33:08 ID:iqmcGz6F BE:151564-#
linuxのサーバでずっと走らせ続けると突然落ちたりしてました。>mod_perl 最近は安定したんですかね。
おいあほゆき ageんな
>>ぱろゆき メモリが足んなくなったんじゃないか? httpd.confさらしてみそ
>>572 で書かなかったけどmod_perlにせよSpeedyCGIにせよスクリプトに
"use strict;"がついていないと期待どおりの動作にならない
メモリがいくら積んでもスクリプトが悪いとメモリを大きく消費してしまう
(Apache1.3ではApache::PerlRun、Apache2ではModPerl::PerlRunであれば
スクリプトが悪くてもインタプリタが常駐するだけなので一応ある程度高速に
動作するがexit関数を使うとApacheごと落ちてしまう)
まさかmod_perlをApacheモジュール版のPHPと同じように捉えているのか
580 :
nobodyさん :2006/04/07(金) 00:50:07 ID:45h+7cJz
そんな当たり前のことを言ってどうすんの? 別にstrictプラグマが必須なわけじゃないし。
MaxClientsがでかすぎでメモリ、スワップが足んなくなって落ちる事はある
実際は落ちずに反応しなく成るからタチ悪いけどね。 鯖の前まで逝って復旧処理が必要になる。 あのmixiでさえ、speedyじゃなくてmod_perl使ってるくらいだからなあ。
> あのmixiでさえ、speedyじゃなくてmod_perl使ってるくらいだからなあ。 使ってるくらいだから何なんだ? 素直にわかりませんって言えばいいのに。
最近良く使われてる FastCGI 周りもじゃね?
更新があると安全かと言えば、unlha32.dll の開発体制とか見てると そうでもないよね。
587 :
nobodyさん :2006/04/07(金) 11:29:55 ID:t7ikxBQe BE:454098-#
う〜ん、調べるほど、mod_perlを使うメリットがよくわからなくなってしまいました。
>動作するがexit関数を使うとApacheごと落ちてしまう) 最近のは大丈夫なんじゃなかったっけ? でもalarmとか使うとhttpdプロセスごと落ちたかも。
Apacheと一心同体 こけるときゃ一緒だぜ
関係ないけどlighttpdってホント軽いお
>>575 にも出てるけど、mod_perlの最大の特徴はC/C++と並んで
Apacheモジュールを書くことが可能な点だと思う。
たとえば、掲示板スクリプトがあったとして、
アクセス規制をアクセス制御フェーズのモジュールにしてしまえば、
スクリプトからアクセス規制のコードをほとんど除けるとかね。
そういうのってフロントなリバースプロクシとかでやればよくなくね? アプリ鯖でわざわざやることもなかろう。
mixiがmod_perl使ってるから、何も考えないでmod_perl使っていいよ。
595 :
nobodyさん :2006/04/07(金) 13:35:25 ID:t7ikxBQe BE:454289-#
旧まちBBSとかime.nuもmod_perlですけど、 speedyの存在を知らなかったのでmod_perlにしてしまっただけで、、 Apacheモジュールをperlで書けるようになるのは、 面白いかなぁと思うのですが、 サンプルスクリプトをあまり見ないので、 どうやって作るのかよくわからないのです。
> サンプルスクリプトをあまり見ないので、 > どうやって作るのかよくわからないのです。 Sledge とか Catalyst とか使ってればよくなくね?
>>597 英語が分からないので、訳してもらえるとありがたいのですが。
(#^ω^)ビキビキビキ…
初心者にそういう対応をするのって、技術系コミュミティの最大の欠点ですよね。
お前はいつまで初心者で居るつもりだっつーの
初心者かどうかは教える側が判断するんだよ。
英語ぐらい読めないとこの世界やってけねーって 俺は読めないけどフィーリングて凌いでるわ
> ID:t7ikxBQe BE:454289-# 以外の煽りに反応する馬鹿ww
?
mixi amazon hatenaとかmod_perl使ってるんだから、ここでも導入しようぜ。
607 :
nobodyさん :2006/04/07(金) 16:55:58 ID:t7ikxBQe BE:283695-#
>>597 音読してもサンプルスクリプトが見つかりませんでした。
スレが伸びていると思ったらまたまろゆきさんですか mod_perlだと落ちる原因わかったんですか?
611 :
nobodyさん :2006/04/09(日) 10:51:21 ID:+EXs1BCX BE:302786-#
定期的にapacheを再起動すると回避できるということがわかったぐらいで、、
612 :
nobodyさん :2006/04/09(日) 10:57:33 ID:+EXs1BCX BE:177247-#
CPANでSpeedyをインストールしようとしたのですが、 メモリリークのテストで失敗してしまいました。 こういうのはどうしたらいいんでしょうか、、、 t/be_memleak..........ok 1/2 mem usage went from 2628K to 6256K in 1000 runs t/be_memleak..........FAILED test 2 Failed 1/2 tests, 50.00% okay
>>612 force install
で無理やりインストール出来る
614 :
nobodyさん :2006/04/09(日) 12:03:15 ID:33YnNOf2 BE:50742-#
forceインストールでもいいんですが、 メモリリークが起きてるなら、 それを直したほうがいいかなぁ、、と。
状態を着手にして、放置プレイということも考えられる。
617 :
nobodyさん :2006/04/09(日) 17:20:57 ID:??? BE:454289-#
うーむ、それは着手とは言わないでほしいなぁ。。
testがこけるだけでしょ?
619 :
nobodyさん :2006/04/09(日) 23:27:03 ID:??? BE:397679-#
あ、そなんすか?
だいたいそんなもんだよ 使ってみて具合が悪かったら自分でごにょごにょして作成者やメンテしてる人にパッチ送ったり
Win32環境で、mod_perl入れたんですが httpd.confにApache::Registry等を書き込む方法を説明した サイト等があれば是非教えていただきたいのですが。 このままだと多分mod_perlが入っていない状態と同じであると思われるので…
>>621 サイトは知らないけど、こんな感じでOK。
但し、Apache2+mod_perl2での例。
LoadFile "c:/Perl/bin/perl58.dll"
LoadModule perl_module modules/mod_perl.so
<Directory "c:/mod/perl/path">
SetHandler perl-script
PerlHandler ModPerl::Registry
Options +ExecCGI
</Directory>
624 :
622 :2006/04/21(金) 18:19:24 ID:???
>>623 httpd.conf を見ましたが、特にエラーとなる要因は無いと思います。
ただ、
PerlHandler ModPerl::Registry
といった記述が無いので、このままではmod_perlは動作しないと思いますが、
修正後は入れているということですよね?
apachectl -t
で何かエラーが出ますか?
リクエスト時の error.log には何が記録されてますか?
テストしているソースコードは他のmod_perl環境で動作した実績はあるのでしょうか。
>>624 confファイルを見て頂き、大変恐縮です。
上記のスクリプトは修正前なので、実際は何れの<Directory>の中に
PerlHandler等の記述をした上で行います。
apachectlコマンドは、binフォルダ内にもApacheフォルダ内にもexeが存在しないため、
多分ですが、Win32環境では使えないのでは、と思っています。
実際に、既存の<Directory>内に(C:/wwwとC:/www/user/*)
SetHandler perl-script
PerlHandler ModPerl::Registry
を追加してみたものの、今度はWebページすべてが404エラーとなり、
cgiへのパスを入力した所、Internal Server Errorが出ました。
尚、その場合におきまして、error.logには、
cgi-lib.plが@INC内にないというエラーが出ましたので、
早速@INCに当たる部分(C:/Perl/lib/)に、公式より落として入れてみたものの、その後も
[error] [client 192.168.11.2] Attempt to serve directory: C:/www/
のようなエラーが出たまま、cgiファイルは勝手にソースを
ダウンロードさせるような形になってしまいました。
その際にも、相変わらずWebページは404エラーのままでした。
404???
>>625 print q{Content-Type: text/plain}, map {qq{$_=$ENV{$_}\n}} keys %ENV
という内容のファイルで試してみ。
何か汚そうなコードを動かそうとしているみたいだから。
2ちゃんってmod_perlで動いてるの?
確かSpeedyCGIだったはず
631 :
622 :2006/04/27(木) 16:42:02 ID:???
>>625 遅くなりました。
Win32版に apachectl は無いですね。
失礼しました。
何が原因か分かりませんが、状況からすると mod_perlだけでなく、
他の問題も含まれている気がします。
まずは、mod_perlを後回しにして普通の CGIが動くようにディレクティブを設定して、
それから mod_perlに関する記述を入れてはいかがでしょうか。
そんなに複雑な設定をしなくても、すんなりと動いてくれるはずです。
但し、mod_perl に適したソースコードが前提となりますが。
>>630 のリンク先も、かなり参考になるはずです。
>>625 Attempt to serve directory がログに残るのは,SetHandler を記述すると
DirectoryIndex が効かなくなるためです。よって 404 が返るのだと思われます。
で,cgiを動かしたいディレクトリがどこなのハッキリしませんが,c:/www だとすると,
<Directory "c:/www">
Options -Indexes FollowSymLinks +ExecCGI
AllowOverride None
Order allow,deny
Allow from all
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
</Directory>
とりあえずオマケで付いてくる printenv.pl を置いてみて,確認しましょう。
但しこれですと htmlファイルとかも mod_perl の餌食になりますので,
SetHandler以下3行をFilesMatchなんかで括って,拡張子 cgi だけ
mod_perlで動くようにするすると幸せになれるのでは?
>>627 ,
>>630-632 たくさんのレスを頂き大変感謝しています。
御陰様で、やや状況が前進しました。
>>630 氏のサイトを参考に設定を行い、
>>632 氏の指摘通りに
.cgiの拡張子のみに適応するようにしました所、
>>627 氏の記述(HTTPヘッダを付け足しましたが)により生成したcgiと、
>>630 氏のサイトのprintenv.cgiを正しく表示する事が出来ました。
しかし、
>>627 氏の仰る通りに、汚いプログラムを動かしているのですが、
どうやらcgi自体がrequireしているファイルを、@incの場所しか読まず、
同階層に存在しているものを、読んでくれない為の様なのです。
何故なら、@incに存在しないファイル(cgi-lib等)が、
require要求を出すCGIと同一の階層に既に含まれているからです。
ちなみに、mod_perlを使わない状態では、
エラーは出る事がなく、きちんと見る事が出来ていました。
どうか、お知恵をお貸しください。
( ^ω^) ・・・
635 :
632 :2006/04/29(土) 08:38:44 ID:???
>>633 PerlRequire に記述した StartupScript (例では extra.pl) の先頭に,
INC に追加したい Path を以下の様に記述してください。
(Pathはテキトーです,書き換えて下さい)
BEGIN {
use lib qw( c:/www/lib c:/www/cgi-bin/lib );
}
または,cgi の先頭に 上記の use 文のみ記述しても同じです。
これで INCの問題は解決しますが,そもそも mod_perl では cgi 実行時の
カレントディレクトリが cgi の存在するディレクトリになりません。
汚い cgi では File の入出力とかで問題が出るかも?ですので,ファイル名が
相対パスで記述されている部分を絶対パスにするなど,手を打っておきましょう。
Have a nice GW !!
636 :
632 :2006/04/30(日) 01:19:27 ID:???
間違えました。require でしたね・・・。 635 の use 文は無し無しです。 require を絶対パスで記述して下さい。たとえばこんな感じ。 require 'c:/www/jcode.pl'; しかし,想像するに Perl4 時代の cgi の様な感じがしますね。 結構苦労すると思います。この際,ModPerl::Registry は止めて ModPerl::PerlRun で妥協するのも有りかもしれません。
637 :
nobodyさん :2006/05/05(金) 22:48:25 ID:2XcXcVrY
HTML::Template.pm を使用しているcgiを、mod_perlに移行したいと考えているのですが、 下記コードをmod_perlが実行できる環境で単純に実行するだけだと Cannot open included file とエラーがでます。 mod_perlで実行するには、どう変更したらよいのでしょうか。 __ HTML __ <html> <head><title>Test Template</title> <body> My Home Directory is <TMPL_VAR NAME=HOME> <p> My Path is set to <TMPL_VAR NAME=PATH> </body> </html> __ perl __ use strict; use HTML::Template; my $template = HTML::Template->new(filename => 'test.html'); $template->param(HOME => $ENV{HOME}); $template->param(PATH => $ENV{PATH}); print "Content-Type: text/html\n\n", $template->output;
>>637 mod_perlではスクリプトのあるディレクトリがカレントディレクトリになるわけではない。
FindManco
641 :
nobodyさん :2006/05/06(土) 13:03:05 ID:DaCfpo3Z
>>638 ありがとうございますー。
テンプレートの場所をフルパスで指定しましたらエラーは吐かれなくなりました
>mod_perlではスクリプトのあるディレクトリがカレントディレクトリになるわけではない。
肝に銘じておきます。
> 肝に銘じておきます。 そんな肝に銘じたりマヌケなことするんじゃなくて、 トラブったときに自分で解決する心がけを身につければよいのでは?
キモッ
イマイチ君どうしの組み合わせ
Apache::PerlRun + perlcc -B
perlの場合現実的な解の有力候補だと思う。
Apache::PerlRunの欠点をperlcc -Bで補う。
perlccは効果薄いと言われてますが、遅いPCではかなり効く。
http://rintaro.dip.jp/nicky/index.html メリット
導入容易
対象プログラム多
リソース消費小
デメリット
スピード面では最高ではない。
>>644 バイトコンパイルは俺も試したが確かに効く。
perlccが効かないとされてる記事はどれも単純なバイトコンパイルではないよ。
実行ファイルにまでコンパイルしている。
しかし、
Apache::PerlRun + perlcc -B
これ本当に動くの?
SpeedyCGI + perlcc -Bはバイナリいじれば動いたがコマンドラインオプション一切受け付けなくなった。
perlcc使うくらいなら、Cで書き直せばいいのに。
>>647 >perlcc使うくらいなら、Cで書き直せばいいのに。
はあ?
perlcc -Bはただのバイトコンパイルですが。
Emacs Lispのバイトコンパイルと全く同じ。
650 :
nobodyさん :2006/05/09(火) 14:22:51 ID:??? BE:420998257-#
必死だなw
>>647 >646
>perlccが効かないとされてる記事はどれも単純なバイトコンパイルではないよ。
>実行ファイルにまでコンパイルしている。
>>647-652 禿げしくスレ違いだな。
俺様が教えてやる。
perlccで作る実行ファイルはCの中にperlのバイトコードを埋め込んだもの。
perlcc -B はperlのバイトコードを作る。
バイトコードは通常のソースと同じように、perlインタープリタが実行できる。
でFA。
色々調べましたが、どうしてもmod_perlが動きません。 環境は Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-16 mod_perl/1.999.21 Perl/v5.8.4 です。 CGI/1.1と表示されます。
660 :
659 :2006/05/11(木) 14:37:37 ID:???
このスレには悪いが、perlなど手がかかりすぎて割があわない。 mod_perlはメモリを消費しすぎるし、しかも開放しない。 ちょっと勧められない。
一昔前ならそうかもしれんがね。 今時、生産性を考えたら Java なんか使えるかよ。 Perl じゃなくても、PHP や Ruby でシステム組んで、マシン足しゃいいんだ。
頼むからv.s.スレでやってくれ。
663 :
659 :2006/05/11(木) 21:13:02 ID:???
>>661 ASPもJSPもPLSQLもステップ実行できない環境で開発したなら、遅いもんだよ。
原因不明のバグは必ず出るだろ。
mod_perlなんか使ったらどうやってデバッグするの?
print?
それはまずいだろ。
ここが巣です。
>>663 > それはまずいだろ。
それはまずいな。
普通はデバッガだろう。
printしか思い浮かばないようじゃ、
それはまずいな。
俺はprint派。デバッグオプションつけると動作が変わるコンパイラに 昔悩まされたのでトラウマが...
>>666 mod_perlでデバッガつかえるんでつか?
だから、探すのが大変なくらいグローバル変数使ってるのがアウトなんでない?
でしょうな。 個人で書いたのはほとんどそうだが。
ところで皆さんはmod_perlで何を動かしてますか? MT?
はじめからmod_perl前提でかかれたものをそのまま動かすか、 自作だとSledgeかCatalystで書いて気分でmod_perl下で動かす こともあるとかそんな感じ。mod_perl専用にガリガリ書くことは ないな。
やっぱり既存のcgiをmod_perlでって難しいの?
>>659 とりあえずロクに使えもしないのに喚いてるのは分かったよ。
巣に帰るか、少しは学んでから出直しておいで。
>>676 わかったから、どこかよそでやってくれ。
スレ違うだろう。
>>675 キャッシュというと聞こえがいいけど、
どっちかというと、初期化されないが正しいと思う。
つうことはなんですか、やっぱlocal変数もサブルーチン呼び出すと記憶したままなんだろうか? ここの説明はあまりないんだよなあ。
680 :
679 :2006/05/12(金) 01:58:27 ID:???
ちょっと説明が悪いかな。 スマソ。 CGIで動作するときは、再度呼び出しても記憶しているが、スクリプト自体が終わったら当然破棄されるよな。 mod_perlってここも残るのかな?
681 :
679 :2006/05/12(金) 02:09:01 ID:???
サブルーチンで値をインクリする簡単なスクリプトでわかるよな。 休みに自分で試しますわ。
682 :
679 :2006/05/12(金) 04:24:41 ID:???
連投すまそ。 Perlよく知らんのでlocal変数ってスタティック変数と思ってました。 スクリプト書いてみて知りました。 ローカルな変数なのね... はずかしす。
他言語でいわゆるローカル変数とかプライベート変数と呼ばれるのはmy。 localの認識もまだ違うっぽい。 あと、日本語ドキュメントに絞って調べてるなら古かったり間違った情報に注意。
>>671 俺様も最初はここに住み着いてる奴らと同じくcgiをRegistryに喰わせて
喜んでたクチだが、仕事でPerlのcgiを動かすのはごく希。今では、
複数サーバ間のシングルサインオンの仕掛けをmod_perl + DBI で
組んだりしとる。アクセス制御系のmoduleを組むことが多いかな。
ヘタレなので、Cでmoduleは書けん。やっぱmod_perlは便利。
>>684 そうなんですよね。
アパッチの太り方は尋常ではないです。
アクセラレータと考えれば、FastCGI、SpeedyCGIが圧倒的に上。
mod_perlの真価はPerlでApacheモジュール書けることなんですよね。
というか、最初からそのための物だし。
>>684 ここは WebProg 板だし,
>>1 の趣旨からして mod_perl で CGI の話題メインでも良いのでは?
ただ,
>>685 でも言われるとおり,mod_perl の神髄は Perl でハンドラ書いて Apache を Hack
できることに尽きる。ResponseHandler とか OutputFilterHandler が取っつきやすいと思う。
Apache の内部処理に対する理解も深まるので,やって損はないと思うけどな。
CGI に飽きたら,Apache Hacking をお勧めしたい。
CGI メインって、普通に書いて Registry に食わせりゃ動くのに、 話すことなんてないよ…。
>>687 >CGI メインって、普通に書いて Registry に食わせりゃ動くのに、
釣りはいかん。
mod_perlは最も制約が多い。
>話すことなんてないよ…。
同感。
FastCGI、SpeedyCGIに比べデメリットは目立つがアドバンテージが感じられん。
体感速度は変わらんし、ベンチ対決も特に勝ってるわけでもない。
>>688 「普通」に書けば動くよ、普通に書けば。
>>689 普通とは何か、普通であるための客観的な評価基準が必要では?
>>689 ずいぶん抽象的な言葉がお好きですね。
use strictはある意味使うべきとは思います。
しかし、グローバル変数を初期化するのはスクリプト本来の姿ではないですが。
カレントディレクトリも本来のPerlとは違うはずですが。
それでも「普通」というならApache::Registryが標準なんでしょう。
694 :
692 :2006/05/16(火) 23:20:14 ID:???
>>693 また抽象的なんですが。
具体的にどこがおかしかったか指摘してください。
>>694 > また抽象的なんですが。
質問文なんですが、抽象的に見えますか?
> > 頭のほうよろしかったでしょうか?
頭のほうがよろしかったかどうか聞いています。
よろしかったか、よろしくなかったかで答えることが可能です。
> 具体的にどこがおかしかったか指摘してください。
「おかしかった」とは一言も言ってませんね。
>頭のほうよろしかったでしょうか? この一言で終われば抽象的です。 その上今度は >「おかしかった」とは一言も言ってませんね。 とくる。 意味がわかりません。
> この一言で終われば抽象的です。 聞いてあげるので、なにをもって抽象的としたいのかご説明どうぞ。 > 意味がわかりません。 頭のほうがよろしくないということでしょうか?
698 :
692 :2006/05/16(火) 23:36:05 ID:???
>>692 >ずいぶん抽象的な言葉がお好きですね。
>
>use strictはある意味使うべきとは思います。
>しかし、グローバル変数を初期化するのはスクリプト本来の姿ではないですが。
>カレントディレクトリも本来のPerlとは違うはずですが。
>それでも「普通」というならApache::Registryが標準なんでしょう。
これが私の発言。
それに対し
>>693 >頭のほうよろしかったでしょうか?
「聞いてあげるので、なにをもって抽象的としたいのかご説明どうぞ。」
指摘が全く具体的でないのでので抽象的としたいです。
699 :
692 :2006/05/16(火) 23:38:57 ID:???
こんなくだらない話はやめて、 >687 CGI メインって、普通に書いて Registry に食わせりゃ動くのに、 話すことなんてないよ…。 このずれた感覚を説明願いたい。
「指摘が全く具体的でない」場合は、「抽象的としたい」のですね? 三省堂 大辞林 第二版 によると、「抽象的」とは、 > (1)概念的で一般的なさま。 > (2)事物を観念によって一面的にとらえ、実際の有り様から遠ざかっているさま。 ということで、具体的でないからといって、抽象的としてしまうのは いかがなものかと思います。
701 :
692 :2006/05/16(火) 23:46:20 ID:???
いい加減にしてもらえませんか。 私は辞書などいちいちひきませんが、具体的と抽象的は中学生が習う反対語とかいうやつです。 「指摘が全く具体的でない」場合は、「抽象的としたい」のですね? その通りです。
> 私は辞書などいちいちひきませんが、具体的と抽象的は中学生が習う反対語とかいうやつです。 デマですね。
703 :
692 :2006/05/16(火) 23:50:17 ID:???
お好きにどうぞ。 もう止めます。
> use strictはある意味使うべきとは思います。 ある意味って何だろう。
705 :
687 :2006/05/16(火) 23:58:06 ID:???
>>699 なんか勝手に同一人物にされてる…のかな?
単に
>>686 を受けて、「mod_perl で CGI の話題」で何を話すことがあるんだ、
Apache ハンドラの話をする方がいいじゃないか、と言いたかっただけなんだが。
設置に関するの話なら板違いだし、アクセラレータとしては FastCGI や
SpeedyCGI の方が優れてるのは誰が見ても明らかなので、議論すること自体が無駄。
パフォーマンス・チューニングの話とかなら大歓迎だが。
>>692 > use strictはある意味使うべきとは思います。
> しかし、グローバル変数を初期化するのはスクリプト本来の姿ではないですが。
> カレントディレクトリも本来のPerlとは違うはずですが。
お前は何を言っているんだ。
イマイチ運用実績に乏しいよな。 これくらいのサーバ(サーバ群)でこれくらいのアクセス数をさばける、みたいな。
つ mixi
はてな・・・はトラブル多くて参考にならんね
>>709 > はてな・・・はトラブル多くて参考にならんね
トラブルが多いか否かって、どうやって評価するの?
藻前の主観ならイラネ。
つ livedoor
713 :
nobodyさん :2006/05/18(木) 00:16:30 ID:??? BE:88313524-#
つ amazon
mixiとかはアクセスが多すぎるから、それはそれで参考にならない。 画像サーバは必ず分けたほうがいいのかとか、同時アクセス数がどれくらいになると別のウェブサーバ用意すべきなのか、とか。
どっかでブレードサーバでmod_perl, mod_python, Java, DBの記事を 見かけた気がするが思い出せん……
716 :
nobodyさん :2006/05/20(土) 02:45:27 ID:6sFQXXC/
先生質問です フロントエンドapacheでproxyとrewrite バックエンドでmod_perlでcatalyst動かしているんですが フォームからpostすると404エラーとなってしまう。 catalystのテストサーバーで動かすとpostしても動くし rewriteのログもおなじ ちなみに mod_perlのエラーろぐには File does not exist: /home/sss/search_query 原因どの辺にあるかわかりますかね すれ違いかもしれんけど・・
とりあえずそのアプリのレポジトリでも晒せばいいんじゃね?
mod_perlはその辺困るんだよな。 根気よくprint文入れるぐらいしかないんじゃまいか。
rewriteでおかしなことしてんだよ
720 :
718 :2006/05/20(土) 15:33:18 ID:???
>>719 >716
>catalystのテストサーバーで動かすとpostしても動くし rewriteのログもおなじ
この通りならmod_perl環境特有の問題と思われるが。
バックエンドを直接叩いたときは?
722 :
716 :2006/05/20(土) 19:32:45 ID:6sFQXXC/
レスどうもです バックエンド127.0.0.1直接でもだめでした。 Catalystならok やっぱmod_perl2かなー
723 :
718 :2006/05/20(土) 21:41:48 ID:???
>>722 だと思いますよ。
私も小さなバグかかえているんですが、mod_perlデバッグがきついですよね。
724 :
718 :2006/05/20(土) 21:44:34 ID:???
>707-713 みると大手で採用されてるみたいだけど、開発どうやってるのかな?
C,C++でmodule作るのとさほどかわんないよ。
726 :
718 :2006/05/20(土) 21:55:33 ID:???
連投すまそ。
>>722 俺の悪い頭では、print文入れてOKな環境下とNGな環境下の違い地道に割り出すぐらいしか浮かびません。
デバッグの手間をへらすって大事なことかなと。
この辺、他の人はどうやってるのかな?
ステップ実行とかやってる人はいないのかな?
727 :
718 :2006/05/20(土) 21:57:38 ID:???
>>725 そんな世界で開発してるの?
それならC,C++で書いたほうがよくない?
728 :
716 :2006/05/21(日) 00:26:28 ID:???
なんか解決しました mod_perlのhttpd.confで PerlModule、PerlLoadModule、PerlTransHandlerを指定していたんだけどはずして、 <location>でSetHandler MyApp、PerlResponseHandler MyAppを指定してOK このへんmod_perlの知識ない私がわるかったもよう・・ 報告まで おかげさんでした
>>726 うーん、Log::Log4perl でも使ってまめにログを取るとか。
>>729 JAVAの初期の頃もそんな感じでしたよね。
向こうは大ブームになったので、開発環境が一気に進んだ。
言語の仕様云々ではなくて、開発環境が欲しい。
特にステップ実行。
> 言語の仕様云々ではなくて、開発環境が欲しい。 > 特にステップ実行。 なんで?
>>730 素朴な疑問なんだけど、Servlet 開発でもステップ実行なんて出来るの?
>>731 print文入れるより圧倒的に能率上がる。
任意の時点でプログラムをポーズさせて、知りたい変数の値を調べ、正常なら1ステップ進めてまた変数の検査。
>>732 JAVAのIDEはどれもできる。
(NetBeans、JBuilder、Eclipse)
Servletのステップ実行だけでなく、JSPもステップ実行可。(Eclipseはやや貧弱)
要はJAVAで開発すると任意の時点で止め調べて再開、また止めて調べる。
こういう環境がタダで入手できる。
(JBuilder以外)
オブジェクト指向がどうのいうよりもこちらが大きい。
734 :
733 :2006/05/21(日) 04:33:30 ID:???
mod_perlにこの開発環境があれば、メモリ食うとかあまり文句言われなくなる。
735 :
733 :2006/05/21(日) 04:57:03 ID:???
>729
>
>>726 >うーん、Log::Log4perl でも使ってまめにログを取るとか。
JAVAも最初はlog4jが主流だった。
メモリ食う上に遅かった。
今はサーバー用途ではC++との速度差は小さい(サーバー用途ではコンパイル言語としてふるまう)。
しかもオブジェクト指向はあえて殺して使っている場合も多い。
(同名メソッドなどはバグの原因がわかりづらくなる。)
メジャーになると、欠点なんか誰も言わなくなる。
>>737 JAVA使いたいんだが、JAVAはエンタープライズに向かったので個人向けソフトがほとんど無い。
だから、mod_perlで開発環境が欲しい。
本音を言えば、言語なんかどれも変わらん。
欲しいのは開発環境。
...と既存の資産。 要はできる限り楽がしたい。
>>738 じゃあこんなところでクダ巻いてないで自分で開発環境作って勝手にやれよ。
mod_perl のスレで JAVA、JAVA、JAVA、JAVA 不快なだけだ。
Eclipse でも使っとけボケ。
>>738 実はEclipseのEPICも使っているが。
mod_perl環境 ×
別にJAVAが好きではない。
デバッグ環境の話がしたかっただけ。
言語は関係ない。
↑
>>738 ×⇒740○
まあ、感情的になるな。
デバッグ環境を整えるのは大切なことだ。
mod_perlのためになる。
743 :
nobodyさん :2006/05/21(日) 09:12:56 ID:fMNVkr/p
JAVA使えばいいじゃんって言ってる人は本質が全然見えてないヤツ あるいは日本語が不自由か
てゆーか、JavaをJAVAと書いてる人って 本当にまともにJava使ったことあるのかなってゆーか 厨っぽいってゆーか
使ったことないけど、ActiveStateのKomodoってどうなんだろうね
>>743 > JAVA使えばいいじゃんって言ってる人は本質が全然見えてないヤツ
その本質って何だろう?
>>747 mod_perlに足りないものは、デバッグ環境。
でいいんでないの。
デバッグ環境ってそんなに便利なんかね。
デバッグ環境なんか興味ないから別スレでやってくれよ。
Apache2::DebugLog
Multidimensional debug logging in mod_perl 2.x
Apache::DebugLog::Config
Multidimensional debug logging in mod_perl
Apache::DebugLog
Multidimensional debug logging in mod_perl 1.x
Apache2::DebugFilter
Debug mod_perl and native Apache2 filters
http://perl.apache.org/docs/1.0/guide/debug.html
>>752 開発環境の重要性への認識が全然ない。
「今、できてるんだからそれでいいじゃないか。」
これは、悪い習慣だよ。
ぶっちゃけ perlは開発環境無しでここまできてた エディタ + perlでいいじゃまいか いぜんperlfactory?だっけあれ使ってたけど 今はemacsで十分だな。 perlがよくわかって無かった時ほどそういうのにこだわってたり
ちょっとだけ話題に乗って。 Windows+mod_perl1系でApache::DBをテストしてるんだけど、 どうしても、Undefined subroutine &Apache::Registry::handler called.がエラーで出てくる。 理由の分かる方いらっしゃいます?
ついでにperlって鯖とローカル(win)とかとCPANモジュールが違ったり 動作が違ってたりする場合あるので開発環境がいみねーって事もあったりする リモートホストでデバッグ出来たりするんかな? 結局ColinuxかVmware+エディタって事になるんじゃまいか
>>756 >今はemacsで十分だな。
そういう風土が悪い習慣。
VBも昔はemacs使いが結構いた。
が、VBのIDEが充実してからは皆去っていった。
>>758 Oracleでさえリモートデバッグできるんだから、mod_perlが無理ってこともないだろう。
>>755 うん、だからそう思うなら自分で開発環境を作ればいいじゃん。
誰も止めてないよ?
764 :
757 :2006/05/21(日) 16:09:12 ID:???
>>760 > PerlModule Apache::Registry
これがすっぽり抜けてました…。
どもでした。
オレはPerlでウェブアプリ作るのにデバッガなんていらないなあ。
print STDERR がデバッガだもんな。
もう一度言っておく。 「今、できてるんだからそれでいいじゃないか。」 これは、悪い習慣だ。 これでは、PerlはCOBOLやFORTRANと同じ運命をたどる。 もうこの辺でやめて、消える。
書き逃げするほどの事だろうか
自分で手を動かせって言ったら逃げる奴に何を言われてもな。
>>770 いい加減スレ違い。mod_perl のスレであって、開発環境のスレじゃない。
パールはデバックが必要なほどの規模なら、他でまた新しく作ればいいジャンってノリだしな。 そこでジャバに乗り換えるのも選択肢の一つ。 別に個人でジャバでもいいんじゃない? あるいはお手軽にPHPとかでもいいし。 ジャバの環境が好きなら、ジャバで作るのもありだと思う。 ここでぐだぐだ逝っても、パールの開発環境は変わらんよ。 そもそもパールはウェブ前提じゃないし、単なるスクリプト廚が泥臭くウェブに応用したってだけ。
> パールはデバックが必要なほどの規模なら、 > 他でまた新しく作ればいいジャンってノリだしな。 それは、藻前のオナニーレベルの話だよね? そうでないということにしたいのなら、そのノリの存在を立証汁。
>>773 >パールはデバックが必要なほどの規模なら
デバッグは規模が小さいといらないのか?
お前は、凡ミスで延々と悩まされた経験はないのか?
もうよそでやれよ
>>776 これは、PerlのCGIを簡単にmod_perlに乗せるためにも必要なことなんだよ。
オマケで喜んでんなよ
オマケが嬉しいんじゃないか
781 :
777 :2006/05/22(月) 23:32:38 ID:???
782 :
777 :2006/05/22(月) 23:34:17 ID:???
783 :
777 :2006/05/22(月) 23:35:55 ID:???
移植の大変さわかってるか?
今の時代に移植なんてやる?w
>>784 >777
>これは、PerlのCGIを簡単にmod_perlに乗せるためにも必要なことなんだよ。
>>784 >今の時代に移植なんてやる?w
COBOLからJavaへの移植バンバンやられてるが。
移植って何だろ? 最低標準モジュールに頼れるところは頼る、use strictで完動、 グローバル変数も皆無とか素性が良いものならともかく、 そこら辺の適当なのを移植するくらいなら1から書き直したほうがマシだろ。
>>788 >グローバル変数も皆無とか
どういうコーディングやってるの?
>そこら辺の適当なのを移植するくらいなら1から書き直したほうがマシだろ。
残念ながら評番のいいCGIもほとんど移植は大変だ。
これは書いたやつのセンスが悪いといいたいのか?
そうだ
print 出力をバッファリングしないようにするにはどうしたらよいでしょうか? 通常のperl時は $|=1; で思うように動作しておりますが、 mod_perl化したところ、まとめて出力される様になってしまいました。 Apache::PerlRun を使っています。
>>791 このスレに知っている者は、ほとんどいない。
途端にだまりこんだな。
>>791 手元では$|=1;でうまく行ってる。
ブラウザでバッファリングされてるってことはないよね?
$|=1; $r->print('hoge');
797 :
791 :2006/05/25(木) 00:26:09 ID:???
>>794 非mod_perlでは動作している為、大丈夫だとは思います。
とりあえず下記の内容で上手く行きました。
バッファリングは生かし、特定タイミングで
解放する様に $|=0 のままで、
my $r = shift;
print "A";
$r->rflush;
sleep 3;
print "B";
ありがとうございました。
>>797 お前がこのスレでは最高レベル。
>791も自分の言葉で答えたので、みどころがあるな。
Perlの本スレといい変なの増えたね
802 :
nobodyさん :2006/05/25(木) 18:20:29 ID:??? BE:397408166-#
回答しないで煽るだけの恥ずかしい奴が増えたってことじゃないのかな?
803 :
798 :2006/05/25(木) 20:37:48 ID:???
× >791 ○ >794 最近年でな。
>>802 >回答しないで煽るだけの恥ずかしい奴が増えたってことじゃないのかな?
お前は>791=>797に回答するような力があるんだな。
ミクシでmod_perlが有名になったからね。雑誌にも載ってたくらいだし。 そしてパール本家には、あのホリエモンと仲がいい子飼団も居るDQNオプソ。
> ミクシでmod_perlが有名になったからね。 KENT レベルの人間でも mod_perl の存在を知るようになったということ? > 雑誌にも載ってたくらいだし。 どれは、どの初心者向けのうんこ雑誌?
>>806 >どれは、どの初心者向けのうんこ雑誌?
多分、「それは、どの初心者向けのうんこ雑誌?」の間違いなんだろ。
このスレのレベルで他人のことを初心者だのうんこだのいうなよ。
それはただのオナニー。
ウンコ執筆者=ミクシ作者 の記事なら見たこと有る。確かに糞雑誌だったので立ち読みで済ませた。
>>808 >立ち読みで済ませた。
Java、PHPではなく、mod_perlをmixiで使用した理由の説明はありましたか?
作者の趣味じゃね? perlしか使えないとかさ。 basicしか使えなきゃbasicだったと思う。
>>805 そういうのを虎の威を借るっていうんだよ。
「mod_perlはこういう点で優れています。」
といえばいいのに、
「何々にも紹介されました。」
「あの誰々さんも関係あります。」
mod_perlを否定はせんが、このスレはアホすぎる。
もともと個人的な興味で始めたプロジェクトだから、Perlでパパッと書けることがよかったんだろう。 サイトが大きくなる途中でJavaで書き直すってことも出来たろうけど、Perlで乗り切れるって目処があったんだろう。 PerlからPHPに変える意味はないし。
>>812 その通りだと思う。
Perl最大の武器は、UNIX系OSでSHELLに準じる地位を得ていること。
ほとんど、OSの一部だ。
逆に最大の欠点はその地位のために、天狗になっていること。
このスレの発言をみる限り将来のPerlは危ない。
> サイトが大きくなる途中でJavaで書き直すってことも出来たろうけど、Perlで乗り切れるって目処があったんだろう。 Java なんか使うと何かいいことあるの? そういう利点すら書けないようなやつが、Java をマンセーしたところでねぇ。w
> 逆に最大の欠点はその地位のために、天狗になっていること。 だれが天狗なの?具体的に列挙してよ。 > このスレの発言をみる限り将来のPerlは危ない。 Perl の将来に影響を及ぼすくらい、このスレには影響力があるの? すごいね。
816 :
813 :2006/05/28(日) 01:51:05 ID:???
>>814 俺は>812ではないが言わせてもらう。
Javaは非常に楽なんだよ。
カプセルに閉じ込めたパーツのメソッドを継承して新しいクラスに利用できる。
大規模な仕様変更になっても、少量の書き直しですむ。
俺はJavaは嫌いだが、開発効率は全く違う。
817 :
813 :2006/05/28(日) 01:55:55 ID:???
>>815 >だれが天狗なの?具体的に列挙してよ。
このスレの70%の人間。
列挙などしきれるはずがない。
>Perl の将来に影響を及ぼすくらい、このスレには影響力があるの?
全然ない。
>>816 > カプセルに閉じ込めたパーツのメソッドを継承して新しいクラスに利用できる。
> 大規模な仕様変更になっても、少量の書き直しですむ。
CPAN モジュールのアダプタ書きまくれば Perl でもできるんじゃね?
>>817 > このスレの70%の人間。
算出根拠は?
819 :
813 :2006/05/28(日) 02:13:49 ID:???
>>818 >CPAN モジュールのアダプタ書きまくれば Perl でもできるんじゃね?
できるかどうかなら、Cでもできる。
問題は自分でもわかっているじゃないか。
書きまくればじゃきつい。
>> このスレの70%の人間。
>算出根拠は?
タダの俺の主観。
スレ全部読んでカウントする価値があるとは思えん。
> >CPAN モジュールのアダプタ書きまくれば Perl でもできるんじゃね? > できるかどうかなら、Cでもできる。 > 問題は自分でもわかっているじゃないか。 > 書きまくればじゃきつい。 Boofy なり Sledge なり CGI::Application なり Catalyst なり Jifty なりを 使えばいいんじゃないかなと。 もしかして、そういうフレームワークの存在を知らなかった?
> >> このスレの70%の人間。 > >算出根拠は? > > タダの俺の主観。 > スレ全部読んでカウントする価値があるとは思えん。 価値があると思えないのに、よく書き込みますね。w
822 :
813 :2006/05/28(日) 02:24:21 ID:???
>>820 こんなことを説明しないといかんのかな。
どんな言語でもオブジェクト指向が流行りだ。
だが、なんでもオブジェクト指向にすれば楽になるなんてことはない。
VBとPerlのオブジェクト指向は似ている。
使っても効率大してあがらん。
それからフレームワークの話と、オブジェクト指向の話は全く別の話だ。
フレームワーク使えば効率あがるが、Javaのフレームワークは有名だが一切ふれてない。
823 :
813 :2006/05/28(日) 02:29:10 ID:???
>>821 つまらんいいがかりはやめて、
「Perlはここが優れている。」
こういう話はできんのか?
俺はJava嫌いだが、このスレではJavaマンセーのようだろうな。
>>822 一度論点を整理してから議論に参加されてはいかがでしょう?
825 :
813 :2006/05/28(日) 02:49:11 ID:???
>>824 >816
>>814 俺は>812ではないが言わせてもらう。
Javaは非常に楽なんだよ。
カプセルに閉じ込めたパーツのメソッドを継承して新しいクラスに利用できる。
大規模な仕様変更になっても、少量の書き直しですむ。
俺はJavaは嫌いだが、開発効率は全く違う。
以上が俺の発言。
この発言に対して、
>820
Boofy なり Sledge なり CGI::Application なり Catalyst なり Jifty なりを
使えばいいんじゃないかなと。
もしかして、そういうフレームワークの存在を知らなかった?
この発言。
論点をフレームワークにすり替えたのは誰だ?
826 :
813 :2006/05/28(日) 02:50:39 ID:???
>>824 オブジェクト指向とフレームワークの区別はつくんだろうな。
> Javaは非常に楽なんだよ。 > カプセルに閉じ込めたパーツのメソッドを継承して新しいクラスに利用できる。 > 大規模な仕様変更になっても、少量の書き直しですむ。 > 俺はJavaは嫌いだが、開発効率は全く違う。 そもそも、 - 議論しようとしているプロジェクトの規模の客観的な測定方法と数字 - 「大規模な仕様変更」とはどの程度の仕様変更か - 「開発効率」の客観的な測定方法 を定義してもらわんと、だれも理解できないよね。
828 :
813 :2006/05/28(日) 03:05:01 ID:???
>>827 いい加減、しつこい。
>そもそも、
>- 議論しようとしているプロジェクトの規模の客観的な測定方法と数字
>- 「大規模な仕様変更」とはどの程度の仕様変更か
>- 「開発効率」の客観的な測定方法
>
>を定義してもらわんと、だれも理解できないよね。
数字になるものとならんものがあるだろう。
お前これ定義できるのか?
829 :
813 :2006/05/28(日) 03:06:45 ID:???
口先の理屈ばかり言ってないで、自分の言葉を話せ。
>>828 > 数字になるものとならんものがあるだろう。
> お前これ定義できるのか?
え?
定義なり説明なりしてもらわないと、藻前以外の人間が把握できないよね。
831 :
813 :2006/05/28(日) 03:13:16 ID:???
>>830 >そもそも、
>- 議論しようとしているプロジェクトの規模の客観的な測定方法と数字
>- 「大規模な仕様変更」とはどの程度の仕様変更か
>- 「開発効率」の客観的な測定方法
>
>を定義してもらわんと、だれも理解できないよね。
これを業務でやると大変な額になるがお前のためにやるのか?
それ以前にすぐに話をそらすのはやめろ。
>>831 できないので、業務の場面では大変な額になるということにしたいのでしょうか?
畑違いの言語を持って来て議論をする場合には、議論に必要な資料を隠さずに
出して頂かないと、少なくともスレ違いになりますね。
> それ以前にすぐに話をそらすのはやめろ。
ということにしたいのですね? :)
833 :
813 :2006/05/28(日) 03:47:28 ID:???
>できないので、業務の場面では大変な額になるということにしたいのでしょうか? 基本的にはその通りだ。 簡単に数値化できるような見積もりに工数は必要ない。 無理やり算出する場合は、工数がかかる。 >ということにしたいのですね? :) こういう不快な発言は慎め。
>>833 > こういう不快な発言は慎め。
ということにしたいのですね? :)
Perlの将来とか他の言語云々は専用のスレ池よ 無かったらスレ立てして議論したい奴があつまってそこですればいい
でもmod_perlで開発するかの判断に、perlの将来性は重要だよ。 目的に合う言語を総合的に判断するには、他言語の知識も必要。 perlは万能と言えない訳だし。 それともここで言語統制でもしたいということにしたいのですね? :) perlで開発効率を良くする手法とかって全く議論されないよね。 オブジェクト指向とか、フレームワーク使ってる香具師って皆無? だから一人か少人数でがんばることに成ってかなりの負担に成るし、サイトが大規模になるとスケールせずに重いとか言われ続ける。 所詮スクリプト言語なんだし、やっつけ仕事向けの言語と言われればそれまでだが。 最大の武器つーか、本来はシェルスクリプトでperl非依存にすべきなのに、面倒という理由でperlでシステムのスクリプト書いてしまうから依存しちゃってるって事だろ。 だからperl5に簡単に移行できなかった反省も全くしてない。 逆にシステムに依存してるから、セキュリティの都合やOS更新で簡単にバージョン上げられて互換性のトラブルに巻き込まれることも有る。 N88-BASICが載ってるPCが有ったからと、N88-BASICで業務システム作っちゃって未だに移行できずに使い続けてるのと大差ない。 windowsやlinuxなんて優れた技術が出て来てるのにまったく取り入れること無く進化が止まったまま。
Perlでも普通にフレームワークとかオブジェクト指向の開発ってされてると思うけど。 それにPerlで作られたツール類をシェルスクリプトで書けって、メチャクチャな話だと思うけど。 そんなスーパーなシェルマスターも中にはいるんだろうけど。 bashやzshを使うって言うなら、依存性うんぬんは成り立たないよ。Perlの方がよっぽどインストール率高いでしょう。
838 :
nobodyさん :2006/05/28(日) 15:50:49 ID:3LeLXEpv
>>836 > 逆にシステムに依存してるから、セキュリティの都合やOS更新で簡単にバージョン上げられて互換性のトラブルに巻き込まれることも有る。
例えば?
840 :
nobodyさん :2006/05/28(日) 18:42:39 ID:Frl78uBn
>>836 君が気に入らないのなら、君が使わなければいいだけではないか?
我々 Perl Mongers は Perl の利点も欠点も愛しているし、不満は
モジュールや Perl6 で解決しようと手を動かしている。
今の Perl に出来ないと判断したら、他の言語を使うとも厭わない。
繰り返す。気に入らないなら Perl や mod_perl を使うな。
そうすれば君もイライラしなくていいし、我々も君のくだらない書き込みで
ウンザリする必要もないよ。
841 :
nobodyさん :2006/05/28(日) 18:58:06 ID:IBt2/VV1
> でもmod_perlで開発するかの判断に、perlの将来性は重要だよ。 Java ってまだオープンソースじゃないよね。 ベンダ側に依存してる言語なんかうんこですよ。 > perlは万能と言えない訳だし。 あらゆる言語に共通するはなししですね。 > それともここで言語統制でもしたいということにしたいのですね? :) 意味不明ですね。 > perlで開発効率を良くする手法とかって全く議論されないよね。 > オブジェクト指向とか、フレームワーク使ってる香具師って皆無? 藻前が知らないだけだと思われ。恥を知れ。
842 :
nobodyさん :2006/05/28(日) 18:59:10 ID:IBt2/VV1
> だから一人か少人数でがんばることに成ってかなりの負担に成るし、 少人数だとかなりの負担になることにしたいようだけど、 大量の人間でデバッグをやっても効率なんか上がらない話がありますね。 > サイトが大規模になるとスケールせずに重いとか言われ続ける。 それはスケールできないような書き方をした場合じゃね? > 所詮スクリプト言語なんだし、やっつけ仕事向けの言語と言われればそれまでだが。 何それ? > 最大の武器つーか、本来はシェルスクリプトでperl非依存にすべきなのに、面倒という理由でperlでシステムのスクリプト書いてしまうから依存しちゃってるって事だろ。 何か知らないけど、すべての言語に言える話では? > 逆にシステムに依存してるから、セキュリティの都合やOS更新で簡単にバージョン上げられて互換性のトラブルに巻き込まれることも有る。 /usr/local でも /opt でも好きなほうを使えば、ふつーにトラブルなんかおきない。 Java なんかだと、VM のソースコード読めなくて、トラブル時にまんどくさくね?
843 :
nobodyさん :2006/05/28(日) 19:00:17 ID:IBt2/VV1
> N88-BASICが載ってるPCが有ったからと、N88-BASICで業務システム作っちゃって未だに移行できずに使い続けてるのと大差ない。 それは、単純にその会社のお金の問題だよね? > windowsやlinuxなんて優れた技術が出て来てるのにまったく取り入れること無く進化が止まったまま。 進化が止まっているというか、Java 以外のことを知らない化石になっているのは 藻前の頭の中の話じゃないの?
844 :
813 :2006/05/28(日) 20:31:40 ID:???
>>837 >Perlでも普通にフレームワークとかオブジェクト指向の開発ってされてると思うけど。
そのオブジェクト指向絶対という考え方ががおかしい。
言語には向き不向きがある。
逆にフレームワークはどの言語でも楽になる。
>>841 >Java ってまだオープンソースじゃないよね。
>ベンダ側に依存してる言語なんかうんこですよ。
JavaはSunが書いた全クラスのソースコードが公開されている。
慎重に物を言え。
>藻前が知らないだけだと思われ。恥を知れ。
お前もな。
Javaも嫌いだが、このスレの排他的な態度はなんだ?
845 :
nobodyさん :2006/05/28(日) 20:40:11 ID:IBt2/VV1
> 逆にフレームワークはどの言語でも楽になる。 そのフレームワーク絶対という考え方ががおかしい。 > JavaはSunが書いた全クラスのソースコードが公開されている。 クラスのソースコードが出てても、VM がクローズドだとかなしくない? > 慎重に物を言え。 断る。w > Javaも嫌いだが、このスレの排他的な態度はなんだ? オマエモナー
>>844 排他的なのはお前だろ?
自分に気に入らないものを認めたがらないだけじゃないか。
>>844 >
>>837 > >Perlでも普通にフレームワークとかオブジェクト指向の開発ってされてると思うけど。
> そのオブジェクト指向絶対という考え方ががおかしい。
> 言語には向き不向きがある。
> 逆にフレームワークはどの言語でも楽になる。
は?オブジェクト指向な開発もある、って言ってるだけなんだけど。
だいたいフレームワークが必ず必要って言うのが、意味がわからないんだけど。
フレームワークが有る言語は大規模システムでも使われることが多い。 パールで大規模システムって見ないね。なんで?
君にもそのうちmixiの招待メール来るよ。
851 :
813 :2006/05/29(月) 00:39:43 ID:???
このスレの住人の多数意見は多分こうだ。 「俺たちは、今の状態に十分満足している。 何の不足も感じていない。 余計な事は聞きたくもない。」 俺の意見はこれだけだ。 「それは、非常に危険なことなんだよ。」
852 :
nobodyさん :2006/05/29(月) 01:17:08 ID:4drf/NIw
> 「それは、非常に危険なことなんだよ。」 危険とは、具体的には何なのかな? Java を使わないことを危険とでもいいたいのかな?
>>851 で、その危険な状態のせいで具体的に何か君に迷惑がかかるかい?
> 「俺たちは、今の状態に十分満足している。
> 何の不足も感じていない。
> 余計な事は聞きたくもない。」
これはダウト。
気に入らないことがあったら、他の言語を使うだけだ。
Modelはオブジェクト指向プログラミングControllerは構造化プログラミング。 Controllerなんて所詮ModelとViewの接着剤に過ぎないのだよ。 オブジェクト指向はあくまでも手段であって、目的になってしまっているやつは頭が弱いなあと思う。 Javaしかできないやつに是非言いたい。 ぎゃーぎゃー騒ぐ前に Perl+CDBI(or DBIC)+TTでページ作ってみろ。C#でWindowsアプリ作ってみろ。 開発工数・テスト工数・保守工数・品質がJavaを遥かに上回っている。 雑誌等で煽られて洗脳されているようだから中々難しいだろうけど、 周りに流されずに自分の目で確かめな。ベンチマークも自分で取りな。 Javaを辞めろとは言わない。俺もJavaを完全に辞めたわけではない(仕事上)。 ただ、伝聞だけで判断するのは非常に危険だよ。自分で確かめることによって、 今までJavaの悪いところに目を瞑っていたり、嘘記事を信じてたりしたんだなあと つくづく思うようになった。 まあどうするかはお前次第だ。だが今のままだとどこぞの宗教と変わらんよ。
本格的にJava坊やのリストラ始まったんだろうか? 丸投げばっかでコストパフォーマンスは最低だから Javaマンセーしてると真っ先にクビにされそうで怖いんだよね。
perlとかC#で大規模サイトなんて案件無いしね。覚える必要も無い。 ぶっちゃけパールって宗教だよね。 他の言語認めないつーか。 宗教戦争でもやらないと他の言語使おうという所まで来ない。 効率が悪かろうが、パールが使いたいという我が儘だけでパールで作成。 ミクシみたいに大規模になって困り果てる罠。ミクシ重いのは100%パールのせい。
じゃあPerlスレに来る必要はないよね^^^
>>857 こういうのを宗教と言う。
こっちはベンチ取ってからしゃべってんのに
Java厨はベンチ取らずに妄想でしゃべってる。
もうくだらなすぎて呆れる限り。
脳みそ腐ってんじゃないかと思う。
スレ違いだから、VSスレに行ってくれ。
>>854 MVCってプログラミングモデルの1つでしかないんだが...
可哀そす
>>857 >ぶっちゃけパールって宗教だよね。
そうだよな。
GNUの悪い部分を受け継いでいる。
一人よがり。
use Inline::**;をしらんのだな。 Perlは糊言語の代表格。XSもそうだが、Perlだけで書く方が効率が良いときだけ書かれてる。 多言語イラネなんて思っているのはごく一部の厨だけ。
いいかげんにしろ
はてながなんか募集してるな。 Java 派の人達応募できなくてカワイソス。w
ミクシはボラクル買えばいいのに。貧乏企業はこれだから。 ミクシもそうだけど、大規模サイトに成って来てパールで苦労してるサイトの一つでしょ。 パールじゃ人集まらないし、担当者も苦労しまくり。他人の作ったパールスクリプトなんてメンテしたくない。
ライブドアブログがオラクルに変えたら糞重くなってmysqlに戻したって話があったね
870 :
nobodyさん :2006/05/30(火) 10:48:06 ID:kutOl2Ky
>>868 速度に関して言えばOracleは遅いよ。
使ったことないくせに知ったかするなよ。
恥ずかしいやつだな。
mixi の規模になると DB 鯖が面倒とかじゃなかったっけ?
>>868 はミクシに大金払えばいいのに。貧乏人はこれだから。
>>868 もそうだけど、頭でっかちで金も実力もないクセに声だけは大きいバカの一人でしょ。
「無料にしろ!」って喧しいくせに、企業に対しては「●●買えよ」と矛盾した要求を言う。
こういう
>>868 みたいなバカは、企業としては相手にしたくない。
> こういう
>>868 みたいなバカ
と分析できているのに何でわざわざ反応してるんだろう。
まあ、mixiはあまりアプリの実装という点では、技術レベルは高くないと思う。負荷分散は経験積んでるんだろうけど。
>>849 単なる相性や用途の差じゃ。
その用途でより向いてる言語がある事は、perlがダメだという事の証明にはならないし、
その突っ込みはちょっと見当違いだと思われ。
>>872 なんかの記事で色々してるっぽいこと書いてたな。
>>875 負荷分散とかはかなりノウハウが出来てて参考になりそうだよな。
あれだけの規模をやりくりできてるのが凄い。
あまり評価してない人が多いけど、あれ以上に出来る人ってどの程度いるんだろw
もちろん開発や鯖にかかる金を考慮して。
Amazonは中規模?
>>870 >
>>868 > 速度に関して言えばOracleは遅いよ。
微妙な表現だな。
MySQLに比べれば遅い。
実装が違いすぎる。
他のDBよりはむしろ速い。
DBの速度は、チューニングや使用環境にかなり依存するので、正確なことは言えんが。
使いにくいんだから、遅かったら一人勝ちはしてないよ。
OracleはPerlに近い開発環境でメジャーになった。 MSは当然開発環境抜群だったが、敗北した。 MSはWin限定ということもあるが、それだけではないと思う。 PerlはOracleに習うべきかな。
えええ?
>>881 ボッタクリという点では反対側にいるが、Unix文化の代表という意味では近いよ。
使いにくさも、通常のwinアプリではあり得ん。 個人的にはインストールはへたなOSよりはるかに嫌だ。
インストーラと管理画面がJavaというのもわからん。 win上とUnix上で違うものをインストしとるのに。
昔、オラクル7くらいかな、インストールした。 パソコン使い始めて20年、これほどインストールが困難なソフトウェアはなかった。
ApacheもOracleに似てるよな。 最近lighttpdなどがでてきてるが、実績積むまではサーバ用途は厳しい。 多少使いにくくても、いいものが使いたければ俺を使え! こんな強みがあるな。 mod_perlはこの辺を生かせばいいのかなと。
ボラクルは8ぐらいからインストーラで簡単に成ったよ。 チューニングは専門知識無いとダメだけどな。 ボラクルは単体勝負では、機能が多すぎだから重くて遅いけど速くする方法はいくらでもある。 RACとか組めるしstarfireやsuperdomeとかでも動くし。 mysqlはスケールしない。だからミクシも重い。ミクシが負荷分散のノウハウあるとは思えない。重いしさ。 あれだけの規模のシステムをmod_perlでメンテって有り得ないし。 perlしか組めないアフォの典型サイトだと思う。
あれだけアクセスあったら重くて当然じゃないか? 逆に何でどう作ったらどの程度のコストで軽く出来るのか知りたい。
javaとoracle RAC。 コストは知らん。 つーかミクシってそんなに稼げない貧乏サイトなの?
オラクルはWEB系じゃ廃れる一方だよ。UNIX系ならMySQLやPostgreSQL、Win系ならMS-SQL。 オラクルの必要性はない。
>>889 最悪コンビだなw
それじゃまともなものできねーよ。
889は典型的な騙され君。自分で検証する癖を付けようね。
おまいら単価低いからボラクル使えないだけだろ? フリーソフトや、MSで苦労してくれ。
プロプラ使ったところで苦労するのは変わらんしなぁ。 単価低くても利益が出てりゃ何でもいいよ。
MySQL、PostgreSQLとも商用では有償。 だがサポートはフリーソフト。
>
>>889 > 最悪コンビだなw
> それじゃまともなものできねーよ。
> 889は典型的な騙され君。自分で検証する癖を付けようね。
どうやって検証するつもり?
言うは易いが行うは難しだ。
896 :
895 :2006/05/31(水) 23:40:57 ID:???
↑TO >891
>>891 >889とお前さんのどちらが騙されているか、一目瞭然なんだが...
>>887 俺は8からしかしらんが、あれでも簡単になってるの?
DebianやGentooがオモチャに見える俺はひょっとしてアフォ?
>>889 同じスペックのマシンでの同時にさばける数が現在より激減しそうだな。
>>899 それは、一概には言えん。
MySQLはシンプル イズ ベスト。
Oracleは大は小を兼ねる。
現実に、こういう基本思想だとは思う。
が、mod_perlが捌けないのは既出。
>>899 > 同じスペックのマシンでの同時にさばける数が現在より激減しそうだな。
この表現じゃ、スペック高くてもスペック揃えて比較すればよくなる。
それじゃ、スケーラビリティ実証済みの>889が圧勝やんか。
ミクシはMySQLのライセンス買って使ってるの? てっきり黙って無料で使ってると思ってた。 perlも無料じゃないと使う香具師は居ないだけじゃね? おまいらperlが商用なら月いくら払う?
> ミクシはMySQLのライセンス買って使ってるの? ライセンスが必要なのは、配布時でしょ?
>>900 横からスマン。
javaってmod_perlと比較するとかなり遅くなかったっけ?
DB部分で足を引っ張ってるだけなら納得だが、
それだとmod_perlでも十分な気がするけど、やっぱりmixiで必要な機能を実装した場合、
mod_perlとjavaでは捌ける数はmod_perlが下になるものなんだろうか。
過負荷の時におかしくなる時があるとは聞いた事あるけど。
>>901 javaとperlだと、perlと同じ規模の処理数をこなすには、
より高いマシンスペックが必要って聞いたけどオレの勘違い?
javaは大規模で速度より堅実、確実さを求められた時の選択肢だと思ってた。
905 :
sage :2006/06/02(金) 08:38:54 ID:???
ここは何のスレですか? どっか別の場所で語れ
自治なのか晒し上げで煽ってんのかわからん
javaのほうが、メモリ使用量が小さい。 % ls -l /usr/bin/perl /usr/bin/java lrwxr-xr-x 1 root wheel 57 26 Dec 2004 /usr/bin/java -rwxr-xr-x 1 root wheel 19944 25 Jul 2005 /usr/bin/perl perlは1セッション当たり20MBもメモリを食う。 1万セッションで、20GBだ。
↑どこまでアホなのか・・・
>>906 sageも出来ない奴に自治なんか無理だからどっちでも一緒だな。
> sageも出来ない奴に自治なんか無理だからどっちでも一緒だな。 sage をメール欄に入れることと、自治をすることと何か関係でも?
912 :
900 :2006/06/03(土) 23:25:22 ID:???
>>904 > javaってmod_perlと比較するとかなり遅くなかったっけ?
> DB部分で足を引っ張ってるだけなら納得だが、
> それだとmod_perlでも十分な気がするけど、やっぱりmixiで必要な機能を実装した場合、
> mod_perlとjavaでは捌ける数はmod_perlが下になるものなんだろうか。
> 過負荷の時におかしくなる時があるとは聞いた事あるけど。
JavaはPerlよりも比較にならないほど速い?
http://homepage3.nifty.com/hippo2000/perltips/javaperl.htm ベンチ厨に一言。
ここを読んでもらうとわかるが、単純なベンチは無意味。
Javaが得意なものはJava、mod_perlが得意なものはmod_perlがはやい。
更に動的コンパイルを使用した場合、閾値を超えたプログラムは
1.別スレッドを立ててコンパイル。
2.ネイティブコードをファイルにキャッシュ。
3.次回からはネイティブコードを実行。
そのため、サーバー用途(繰り返しが多い)では著しく速くなる。
後、同時に捌ける数というのは最大のセッション数という意味だと思うが、そうなら速度云々とは別問題。
> 過負荷の時におかしくなる時があるとは聞いた事あるけど。
こうならない限界が最大のセッション数。
この意味で使ったなら自分で答えを言っている。
同時に捌ける数が、単位時間に処理できる回数(同時という時点で単位時間は不成立。日本語的にはおかしい)という意味なら、単なる速度。
913 :
900 :2006/06/03(土) 23:44:05 ID:???
914 :
900 :2006/06/03(土) 23:50:24 ID:???
じゃあさどれが早いとかこの言語のが云々とかもうやめようね
916 :
900 :2006/06/03(土) 23:57:00 ID:???
漏れの考え的には↑のサイトと同じ。 言語は特徴を生かして使え。 ただ、このスレのJava攻撃はおかしい。
mod_perl スレで、Java マンセーな FUD する連中がおかしいのではないかと。 やりたけりゃ、Perl vs Java でも作って延々やっておけばよろしい。
918 :
900 :2006/06/04(日) 00:06:13 ID:???
別にJavaマンセーではないのだが(むしろ嫌い)。 mod_perlスレの排他的雰囲気にはクレームをつけたくなる。
> mod_perlスレの排他的雰囲気にはクレームをつけたくなる。 どこらへんが排他的なんだろう。 FUD しに来る Java 厨のほうが迷惑ですよ。
920 :
900 :2006/06/04(日) 00:17:23 ID:???
>>919 > どこらへんが排他的なんだろう。
気がついてくれ。
> FUD しに来る Java 厨のほうが迷惑ですよ。
Javaむしろ嫌いだといったはずだが。
Java 厨は>913を引用はせんよ。
921 :
900 :2006/06/04(日) 00:19:14 ID:???
>>920 じゃあ一言。
なんで排他的に接されてるか気が付いてくれ。
お前、よく空気が読めないって言われるだろ。
923 :
900 :2006/06/04(日) 00:24:48 ID:???
そもそも空気を読むって主観的な話だよね。 客観性のある話しようぜ。
そうだな。
客観性のある話をしよう。
927 :
926 :2006/06/04(日) 00:36:13 ID:???
今、気がついたんだが話題がなくはないか?
そうか?
なにを話せばいいんだ?
話題がないのに、無理して話す必要もないのでは? マンコにチンコを入れるとどうして気持ちいいかについて、客観的に議論する?
>>930 > 話題がないのに、無理して話す必要もないのでは?
そうやな。
このスレ必要ないかも...
って急にスレのレベル下がってないか?
>>934 そのレベルの測定方法を客観的にたのむ。
>>935 そうやな。
スレのレベルの客観的測定法を議論しよう。
つーか、できるんかいなほんま?
できたとしてもアホクサ。
主観並べられるよりはマシだと思うけどね。という主観。
どうせ客観は一種のエミュレートだという、主観。
Java なんかつかうやつはばかです。という主観。
いいかげんその話はあきた、という主観。
という主観。とつけるのも秋田。という主観。
やっぱ話題ないわ。
話題なんて、無理して作るものじゃないのでは? マンコ狙いのコンパじゃあるまいし。
そうかもな。
いや、JavaとPerlなら、Javaが速いって言い切っていいだろう。
速いと重いって矛盾してるよね。 捏造ベンチマークはどこでもやってることだけどねぇ。
>>946 > いや、JavaとPerlなら、Javaが速いって言い切っていいだろう。
客観的な検証データ示してよ。
>>948 コンパイル→実行完了までの時間
$ time perl -e 'print "Hello\n"'
Hello
real 0m0.067s
user 0m0.030s
sys 0m0.040s
$ cat >> Hello.java
public class Hello{public static void main(String[] args){System.out.println("Hello");}}
^D
$ time javac Hello.java && java Hello
Hello
real 0m1.112s
user 0m0.010s
sys 0m0.030s
JavaはPerlより20倍遅い
$ time java Hello
Hello
real 0m0.332s
user 0m0.020s
sys 0m0.040s
コンパイル時間抜いても5倍遅い
以上、何も小細工を加えずに計測した客観的な検証データ。
そもそもperlで実行速度勝負って意味ないし、Cで作ればいいじゃん。 あと一回しか計らないってのも何だかなあ。普通は十分なサンプル数を計算して平均なり標準偏差で示すべきでしょ。 一人だけインタビューして、これが国民の総意と報道するマスゴミみたいな報告しか出来ないの? mod_perlでありがちなのは、perlが複数起動されてメモり喰いまくってアパチごとkillされてあぼーんでしょ。 そのへんのメモリ使用量や同時起動数管理の面でperlは不利と言うか、まともな枠組みが無い。
>>950 いくらでもチューニングできるんだが…。
やっぱりこの話題がないと盛り上がらんのね... Java VS Perl どっちも強い言語だからエンドレス。
>>951-952 漏れはSpeedyCGI派だが、メモリ食いまくってアパッチ激太りが解消するならmod_perlに戻りたい。
「設定ファイル」って普通にhttpd.confでおけ?
設定方法を詳しく。
955 :
954 :2006/06/04(日) 10:47:57 ID:???
漏れの調べた範囲では、Apacheが太り続けるのは仕様で、漏れは設定できなかった。 仕方ないのでSpeedyCGIに移行したよ。 マシンがロースペックでメモリも積めないので。
検索も出来ないようなカスは死ね。
957 :
954 :2006/06/04(日) 11:14:54 ID:???
当然ググったよ。 結果は、mod_perlの仕様だった。
>> 949 javacのコンパイル時間は無意味。 javacかけてないjavaソースは実行できない。 ベンチ厨逝ってよし。 Java VS Perlも他でやれ。
SpeedyCGIやFastCGIで済むことをmod_perlでやるのはもったいないし いいんでねーの? いくらチューニングしたところで普通のアクセスには 不要なperlまるごとapacheの全プロセスが抱くのは筋が悪いよ。 mod_perl抱いた奴とそうじゃないのを分けてごにょごにょとかもやりゃ できるけどめんどくさいしね。
960 :
954 :2006/06/04(日) 11:35:49 ID:???
>>959 やっぱ設定できることはできるんだ。
> mod_perl抱いた奴とそうじゃないのを分けてごにょごにょとかもやりゃ
> できるけどめんどくさいしね。
それともただのリバースプロキシ?
961 :
954 :2006/06/04(日) 11:47:58 ID:???
>>959 わからんでもないんだが。
だったら、mod_perlの存在意味がなくなるんでねえの?
959だがおれはリバースプロキシなどを使って分ける方法しか知らないな。
963 :
954 :2006/06/04(日) 11:51:36 ID:???
httpd.confでどう設定すべきか、mod_perl玄人のおまいらに解説願いたい。 ejbみたいにアプリケーションサーバ別けられないし、負荷分散も厳しいでしょ。
965 :
954 :2006/06/04(日) 14:51:32 ID:???
>>964 気持ちはよくわかるんだが、
> アプリケーションサーバ別けられないし、負荷分散も厳しいでしょ。
この点の話がリバースプロキシの話なんよ。
966 :
954 :2006/06/04(日) 14:57:02 ID:???
>>964 >httpd.confでどう設定すべきか、mod_perl玄人のおまいらに解説願いたい。
同感。
>>956 > 検索も出来ないようなカスは死ね。
これしかレスがない。
>>949 > 以上、何も小細工を加えずに計測した客観的な検証データ。
おいおい、何だそれ。
PerlだけファイルのIOがないぞ。
MaxRequestsPerChildでApacheの子プロセスを一定リクエストで殺せばいいんでは。 そういう問題じゃなくて?
>>968 子プロセスごとKillするって事?
正常な姿とは思えんが、問題はでらんの?
>>968 mod_perlとは無関係に上限を設定するって事だよな。
ムリムリじゃん。
>>968 そんな制御しかできないなら、
>>950 > mod_perlでありがちなのは、perlが複数起動されてメモり喰いまくってアパチごとkillされてあぼーんでしょ。
> そのへんのメモリ使用量や同時起動数管理の面でperlは不利と言うか、まともな枠組みが無い。
これが正しいな。
そう言えばミクシの作者って在日なの? ホリエモン関係の子飼といい、ミクシの作者といい、perlって本当に人的リソースに恵まれてないね。
インド人じゃなかったっけ?
日本に留学中の印度人? 不法滞在してたりして(w
アメリカ人じゃなかったっけ?
インドネシアじゃなかったっけ?
南斗聖拳108派の1人じゃなかったっけ?
もういいよ。 在日ってことでいいじゃん。不法滞在で税金も払わず公営住宅に住んでて生活保護受けてるんだろ?
980 :
nobodyさん :2006/06/05(月) 21:50:07 ID:??? BE:496759695-#
いったいどうなっちまったんだこのスレ?
どうなったも何も話すことがねえ。
本領はアパッチモジュールをPerlで書ける点。 アクセラレータとしてはイマイチというのが、大分前にでてからな。
それならまるごとアパチをperlに移植すればいいのに。
つまらんな。 話にもならん。
Apache::Registryはイマイチ。 以上。
>684-688 この辺で結論でてるだろ。
明日には即死するから、次スレよろ。
おまいらmod_perlの使い方教えろ! 今すぐだ。 帰るまでに新しくポータルサイトが必要だからな。
了解
まだポータルサイトで来てないの? perl廚ってレベル低いね。
mod_perlにはroot権限が必要だからな。 今パスワードのメモ探してる所。
SpeedyCGIなら入ってさえいればroot要らんのに。
8080 番とかで動作テストするだけなら、root 権限なんか必要無いんだけど。
995 :
nobodyさん :2006/06/07(水) 13:39:11 ID:CM6sRbzC
mod_perlを設定中な者ですが、一つどこのサイトにも明示的には書いてない気が して、あきらかにしたいんですが、、、 ModPerl::Registry を使って .cgiを動かしても、その.cgiファイル内からuseしたり使 っているモジュールは、別途PerlRequireで指定のスクリプト内でuseしてロードしな ければならないのでしょうか? 現在実験している環境だと、PerlRequire経由でuseでロードしないモジュールは、 perl-statusの "Loaded Modules"には出てきません。僕の勝手な想像では、 「ModPerl::Registryが呼び出した.cgiがuseしているモジュール」は、適宜ロード されて、perl-statusにも表示されるんじゃないかと予想していたんですが、それは ちがうんでしょうかね? 当方の設定ミスなのか、仕様なのかがいまいちはっきり分らないので、聞いてみます。。。
997 :
nobodyさん :2006/06/13(火) 22:43:54 ID:??? BE:424512386-#
埋め
998 :
nobodyさん :2006/06/13(火) 22:44:25 ID:??? BE:141503982-#
埋め
999 :
nobodyさん :2006/06/13(火) 22:44:56 ID:??? BE:309540375-#
埋め
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。