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

mod_perlを使おう!

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん01/11/07 17:42ID:+Gux2iOQ
CGIを激速で実行できるmod_perlについて語りませう。
関連リンク等は>2
0655nobodyさん2006/05/11(木) 06:30:48ID:???
>>649

>>http://rintaro.dip.jp/nicky/index.html
>読んでみたほうがいいかと。

>>>グローバル変数の初期化だけ追加すればいいのですがグローバル変数を探すのが大変です。 なにしろnicky.cgiは6000行あるのです。

この時点で、すでにアウトなんでない?
0656nobodyさん2006/05/11(木) 13:00:57ID:???
>>655
スレ違い。
いいかげんやめれ。
0657nobodyさん2006/05/11(木) 13:09:16ID:???
>>655
漏れは、兵庫県や日本生命のプロジェクトでPGしてた。
6000行のソース読んでグローバル変数割り出すのは丸1日では無理。
>http://rintaro.dip.jp/nicky/index.html
これで割り出せているのは幸運。

use strict 'vars';
これは別に万能ではない。
0658nobodyさん2006/05/11(木) 13:10:01ID:???
>>657
スレ違うって。
0659nobodyさん2006/05/11(木) 14:32:43ID:???
>>657
俺もSQLやJAVA、VBでPGをしていた。
数万行のソースは普通だが、
>http://rintaro.dip.jp/nicky/index.html
の意見はまっとうだと思うな。
SQL、JAVA、VBは生産性がいいから大規模プロジェクトで使われる。
06606592006/05/11(木) 14:37:37ID:???
このスレには悪いが、perlなど手がかかりすぎて割があわない。
mod_perlはメモリを消費しすぎるし、しかも開放しない。
ちょっと勧められない。
0661nobodyさん2006/05/11(木) 19:31:33ID:???
一昔前ならそうかもしれんがね。

今時、生産性を考えたら Java なんか使えるかよ。
Perl じゃなくても、PHP や Ruby でシステム組んで、マシン足しゃいいんだ。
0662nobodyさん2006/05/11(木) 21:03:06ID:???
頼むからv.s.スレでやってくれ。
06636592006/05/11(木) 21:13:02ID:???
>>661
ASPもJSPもPLSQLもステップ実行できない環境で開発したなら、遅いもんだよ。
原因不明のバグは必ず出るだろ。

mod_perlなんか使ったらどうやってデバッグするの?
print?
それはまずいだろ。


0664nobodyさん2006/05/11(木) 21:22:12ID:???
>>663
よくわかったので巣に帰ってください
0665nobodyさん2006/05/11(木) 21:35:54ID:???
ここが巣です。
0666nobodyさん2006/05/11(木) 21:37:09ID:???
>>663
> それはまずいだろ。
それはまずいな。

普通はデバッガだろう。

printしか思い浮かばないようじゃ、
それはまずいな。
0667nobodyさん2006/05/11(木) 21:41:20ID:???
俺はprint派。デバッグオプションつけると動作が変わるコンパイラに
昔悩まされたのでトラウマが...
0668nobodyさん2006/05/11(木) 21:53:30ID:???
>>666
mod_perlでデバッガつかえるんでつか?
0669nobodyさん2006/05/11(木) 22:10:45ID:???
だから、探すのが大変なくらいグローバル変数使ってるのがアウトなんでない?
0670nobodyさん2006/05/11(木) 22:15:05ID:???
でしょうな。
個人で書いたのはほとんどそうだが。
0671nobodyさん2006/05/11(木) 22:19:31ID:???
ところで皆さんはmod_perlで何を動かしてますか?
MT?
0672nobodyさん2006/05/11(木) 22:25:40ID:???
はじめからmod_perl前提でかかれたものをそのまま動かすか、
自作だとSledgeかCatalystで書いて気分でmod_perl下で動かす
こともあるとかそんな感じ。mod_perl専用にガリガリ書くことは
ないな。
0673nobodyさん2006/05/11(木) 22:28:37ID:???
やっぱり既存のcgiをmod_perlでって難しいの?
0674nobodyさん2006/05/11(木) 22:43:27ID:???
>>673
Apache+mod_perlでCGIを使うには?
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl.html
0675nobodyさん2006/05/11(木) 22:56:38ID:???
http://www.din.or.jp/~bigstone/cgilab/cgitips/mod_perl1.html
2. ロードされたスクリプトは実行後もメモリにキャッシュされる

これ読むと、localもキャッシュされるような説明ですが、誰か説明してください。
0676nobodyさん2006/05/12(金) 01:35:05ID:???
>>659
とりあえずロクに使えもしないのに喚いてるのは分かったよ。
巣に帰るか、少しは学んでから出直しておいで。
0677nobodyさん2006/05/12(金) 01:40:51ID:???
>>676
わかったから、どこかよそでやってくれ。
スレ違うだろう。
0678nobodyさん2006/05/12(金) 01:41:17ID:???
>>675
キャッシュというと聞こえがいいけど、
どっちかというと、初期化されないが正しいと思う。
0679nobodyさん2006/05/12(金) 01:46:25ID:???
つうことはなんですか、やっぱlocal変数もサブルーチン呼び出すと記憶したままなんだろうか?
ここの説明はあまりないんだよなあ。
06806792006/05/12(金) 01:58:27ID:???
ちょっと説明が悪いかな。
スマソ。
CGIで動作するときは、再度呼び出しても記憶しているが、スクリプト自体が終わったら当然破棄されるよな。
mod_perlってここも残るのかな?
06816792006/05/12(金) 02:09:01ID:???
サブルーチンで値をインクリする簡単なスクリプトでわかるよな。
休みに自分で試しますわ。
06826792006/05/12(金) 04:24:41ID:???
連投すまそ。

Perlよく知らんのでlocal変数ってスタティック変数と思ってました。
スクリプト書いてみて知りました。
ローカルな変数なのね...

はずかしす。
0683nobodyさん2006/05/12(金) 08:26:22ID:???
他言語でいわゆるローカル変数とかプライベート変数と呼ばれるのはmy。
localの認識もまだ違うっぽい。
あと、日本語ドキュメントに絞って調べてるなら古かったり間違った情報に注意。
0684nobodyさん2006/05/15(月) 01:31:28ID:???
>>671
俺様も最初はここに住み着いてる奴らと同じくcgiをRegistryに喰わせて
喜んでたクチだが、仕事でPerlのcgiを動かすのはごく希。今では、
複数サーバ間のシングルサインオンの仕掛けをmod_perl + DBI で
組んだりしとる。アクセス制御系のmoduleを組むことが多いかな。
ヘタレなので、Cでmoduleは書けん。やっぱmod_perlは便利。
0685nobodyさん2006/05/15(月) 02:19:30ID:???
>>684
そうなんですよね。
アパッチの太り方は尋常ではないです。
アクセラレータと考えれば、FastCGI、SpeedyCGIが圧倒的に上。
mod_perlの真価はPerlでApacheモジュール書けることなんですよね。
というか、最初からそのための物だし。
0686nobodyさん2006/05/16(火) 01:18:40ID:???
>>684
ここは WebProg 板だし,>>1 の趣旨からして mod_perl で CGI の話題メインでも良いのでは?
ただ,>>685 でも言われるとおり,mod_perl の神髄は Perl でハンドラ書いて Apache を Hack
できることに尽きる。ResponseHandler とか OutputFilterHandler が取っつきやすいと思う。
Apache の内部処理に対する理解も深まるので,やって損はないと思うけどな。
CGI に飽きたら,Apache Hacking をお勧めしたい。
0687nobodyさん2006/05/16(火) 02:33:50ID:???
CGI メインって、普通に書いて Registry に食わせりゃ動くのに、
話すことなんてないよ…。
0688nobodyさん2006/05/16(火) 19:05:42ID:???
>>687
>CGI メインって、普通に書いて Registry に食わせりゃ動くのに、
釣りはいかん。
mod_perlは最も制約が多い。
>話すことなんてないよ…。
同感。
FastCGI、SpeedyCGIに比べデメリットは目立つがアドバンテージが感じられん。
体感速度は変わらんし、ベンチ対決も特に勝ってるわけでもない。
0689nobodyさん2006/05/16(火) 22:24:14ID:???
>>688
「普通」に書けば動くよ、普通に書けば。
0690nobodyさん2006/05/16(火) 22:55:49ID:???
>>689
普通とは何か、普通であるための客観的な評価基準が必要では?
0691nobodyさん2006/05/16(火) 23:04:43ID:???
>>690
くだんね。
0692nobodyさん2006/05/16(火) 23:11:37ID:???
>>689
ずいぶん抽象的な言葉がお好きですね。

use strictはある意味使うべきとは思います。
しかし、グローバル変数を初期化するのはスクリプト本来の姿ではないですが。
カレントディレクトリも本来のPerlとは違うはずですが。

それでも「普通」というならApache::Registryが標準なんでしょう。
0693nobodyさん2006/05/16(火) 23:17:09ID:???
>>692
頭のほうよろしかったでしょうか?
06946922006/05/16(火) 23:20:14ID:???
>>693
また抽象的なんですが。
具体的にどこがおかしかったか指摘してください。
0695nobodyさん2006/05/16(火) 23:23:23ID:???
>>694
> また抽象的なんですが。

質問文なんですが、抽象的に見えますか?

> > 頭のほうよろしかったでしょうか?

頭のほうがよろしかったかどうか聞いています。
よろしかったか、よろしくなかったかで答えることが可能です。

> 具体的にどこがおかしかったか指摘してください。

「おかしかった」とは一言も言ってませんね。
0696nobodyさん2006/05/16(火) 23:27:23ID:???
>頭のほうよろしかったでしょうか?
この一言で終われば抽象的です。

その上今度は
>「おかしかった」とは一言も言ってませんね。
とくる。

意味がわかりません。
0697nobodyさん2006/05/16(火) 23:29:05ID:???
> この一言で終われば抽象的です。

聞いてあげるので、なにをもって抽象的としたいのかご説明どうぞ。

> 意味がわかりません。

頭のほうがよろしくないということでしょうか?
06986922006/05/16(火) 23:36:05ID:???
>>692
>ずいぶん抽象的な言葉がお好きですね。
>
>use strictはある意味使うべきとは思います。
>しかし、グローバル変数を初期化するのはスクリプト本来の姿ではないですが。
>カレントディレクトリも本来のPerlとは違うはずですが。

>それでも「普通」というならApache::Registryが標準なんでしょう。

これが私の発言。

それに対し
>>693
>頭のほうよろしかったでしょうか?

「聞いてあげるので、なにをもって抽象的としたいのかご説明どうぞ。」
指摘が全く具体的でないのでので抽象的としたいです。

06996922006/05/16(火) 23:38:57ID:???
こんなくだらない話はやめて、
>687
CGI メインって、普通に書いて Registry に食わせりゃ動くのに、
話すことなんてないよ…。

このずれた感覚を説明願いたい。
0700nobodyさん2006/05/16(火) 23:41:55ID:???
「指摘が全く具体的でない」場合は、「抽象的としたい」のですね?

三省堂 大辞林 第二版 によると、「抽象的」とは、

> (1)概念的で一般的なさま。
> (2)事物を観念によって一面的にとらえ、実際の有り様から遠ざかっているさま。

ということで、具体的でないからといって、抽象的としてしまうのは
いかがなものかと思います。
07016922006/05/16(火) 23:46:20ID:???
いい加減にしてもらえませんか。
私は辞書などいちいちひきませんが、具体的と抽象的は中学生が習う反対語とかいうやつです。

「指摘が全く具体的でない」場合は、「抽象的としたい」のですね?
その通りです。
0702nobodyさん2006/05/16(火) 23:49:18ID:???
> 私は辞書などいちいちひきませんが、具体的と抽象的は中学生が習う反対語とかいうやつです。

デマですね。
07036922006/05/16(火) 23:50:17ID:???
お好きにどうぞ。
もう止めます。
0704nobodyさん2006/05/16(火) 23:53:30ID:???
> use strictはある意味使うべきとは思います。

ある意味って何だろう。
07056872006/05/16(火) 23:58:06ID:???
>>699
なんか勝手に同一人物にされてる…のかな?

単に >>686 を受けて、「mod_perl で CGI の話題」で何を話すことがあるんだ、
Apache ハンドラの話をする方がいいじゃないか、と言いたかっただけなんだが。

設置に関するの話なら板違いだし、アクセラレータとしては FastCGI や
SpeedyCGI の方が優れてるのは誰が見ても明らかなので、議論すること自体が無駄。
パフォーマンス・チューニングの話とかなら大歓迎だが。

>>692
> use strictはある意味使うべきとは思います。
> しかし、グローバル変数を初期化するのはスクリプト本来の姿ではないですが。
> カレントディレクトリも本来のPerlとは違うはずですが。
お前は何を言っているんだ。
0706nobodyさん2006/05/16(火) 23:58:56ID:???
>>705
お前は何を言っているんだ。
0707nobodyさん2006/05/17(水) 13:29:41ID:???
イマイチ運用実績に乏しいよな。
これくらいのサーバ(サーバ群)でこれくらいのアクセス数をさばける、みたいな。
0708nobodyさん2006/05/17(水) 14:44:34ID:???
つ mixi
0709nobodyさん2006/05/17(水) 14:53:47ID:???
はてな・・・はトラブル多くて参考にならんね
0710nobodyさん2006/05/17(水) 16:05:11ID:???
>>709
> はてな・・・はトラブル多くて参考にならんね

トラブルが多いか否かって、どうやって評価するの?
藻前の主観ならイラネ。
0711nobodyさん2006/05/17(水) 20:54:37ID:???
つ livedoor
0712nobodyさん2006/05/17(水) 21:26:09ID:???
>>709
>>710
同じ会社の人がいがみあっちゃだめです。
0713nobodyさんNGNG
つ amazon
0714nobodyさん2006/05/18(木) 02:01:56ID:???
mixiとかはアクセスが多すぎるから、それはそれで参考にならない。
画像サーバは必ず分けたほうがいいのかとか、同時アクセス数がどれくらいになると別のウェブサーバ用意すべきなのか、とか。
0715nobodyさん2006/05/19(金) 00:00:41ID:???
どっかでブレードサーバでmod_perl, mod_python, Java, DBの記事を
見かけた気がするが思い出せん……
0716nobodyさん2006/05/20(土) 02:45:27ID:6sFQXXC/
先生質問です
フロントエンドapacheでproxyとrewrite
バックエンドでmod_perlでcatalyst動かしているんですが
フォームからpostすると404エラーとなってしまう。
catalystのテストサーバーで動かすとpostしても動くし rewriteのログもおなじ
ちなみに mod_perlのエラーろぐには
File does not exist: /home/sss/search_query

原因どの辺にあるかわかりますかね
すれ違いかもしれんけど・・
0717nobodyさん2006/05/20(土) 04:58:54ID:???
とりあえずそのアプリのレポジトリでも晒せばいいんじゃね?
0718nobodyさん2006/05/20(土) 05:14:38ID:???
mod_perlはその辺困るんだよな。
根気よくprint文入れるぐらいしかないんじゃまいか。
0719nobodyさん2006/05/20(土) 14:22:00ID:???
rewriteでおかしなことしてんだよ
07207182006/05/20(土) 15:33:18ID:???
>>719
>716
>catalystのテストサーバーで動かすとpostしても動くし rewriteのログもおなじ
この通りならmod_perl環境特有の問題と思われるが。
0721nobodyさん2006/05/20(土) 16:29:48ID:???
バックエンドを直接叩いたときは?
07227162006/05/20(土) 19:32:45ID:6sFQXXC/
レスどうもです バックエンド127.0.0.1直接でもだめでした。
Catalystならok
やっぱmod_perl2かなー
07237182006/05/20(土) 21:41:48ID:???
>>722
だと思いますよ。
私も小さなバグかかえているんですが、mod_perlデバッグがきついですよね。
07247182006/05/20(土) 21:44:34ID:???
>707-713
みると大手で採用されてるみたいだけど、開発どうやってるのかな?
0725nobodyさん2006/05/20(土) 21:52:57ID:???
C,C++でmodule作るのとさほどかわんないよ。
07267182006/05/20(土) 21:55:33ID:???
連投すまそ。
>>722
俺の悪い頭では、print文入れてOKな環境下とNGな環境下の違い地道に割り出すぐらいしか浮かびません。
デバッグの手間をへらすって大事なことかなと。

この辺、他の人はどうやってるのかな?
ステップ実行とかやってる人はいないのかな?
07277182006/05/20(土) 21:57:38ID:???
>>725
そんな世界で開発してるの?
それならC,C++で書いたほうがよくない?
07287162006/05/21(日) 00:26:28ID:???
なんか解決しました
mod_perlのhttpd.confで
PerlModule、PerlLoadModule、PerlTransHandlerを指定していたんだけどはずして、
<location>でSetHandler MyApp、PerlResponseHandler MyAppを指定してOK
このへんmod_perlの知識ない私がわるかったもよう・・
報告まで おかげさんでした
0729nobodyさん2006/05/21(日) 00:56:23ID:???
>>726
うーん、Log::Log4perl でも使ってまめにログを取るとか。
0730nobodyさん2006/05/21(日) 01:25:34ID:???
>>729
JAVAの初期の頃もそんな感じでしたよね。
向こうは大ブームになったので、開発環境が一気に進んだ。

言語の仕様云々ではなくて、開発環境が欲しい。
特にステップ実行。
0731nobodyさん2006/05/21(日) 02:24:20ID:???
> 言語の仕様云々ではなくて、開発環境が欲しい。
> 特にステップ実行。

なんで?
0732nobodyさん2006/05/21(日) 03:14:53ID:???
>>730
素朴な疑問なんだけど、Servlet 開発でもステップ実行なんて出来るの?
0733nobodyさん2006/05/21(日) 04:22:20ID:???
>>731
print文入れるより圧倒的に能率上がる。
任意の時点でプログラムをポーズさせて、知りたい変数の値を調べ、正常なら1ステップ進めてまた変数の検査。

>>732
JAVAのIDEはどれもできる。
(NetBeans、JBuilder、Eclipse)
Servletのステップ実行だけでなく、JSPもステップ実行可。(Eclipseはやや貧弱)
要はJAVAで開発すると任意の時点で止め調べて再開、また止めて調べる。
こういう環境がタダで入手できる。
(JBuilder以外)

オブジェクト指向がどうのいうよりもこちらが大きい。
07347332006/05/21(日) 04:33:30ID:???
mod_perlにこの開発環境があれば、メモリ食うとかあまり文句言われなくなる。
07357332006/05/21(日) 04:57:03ID:???
>729
>>>726
>うーん、Log::Log4perl でも使ってまめにログを取るとか。

JAVAも最初はlog4jが主流だった。
メモリ食う上に遅かった。
今はサーバー用途ではC++との速度差は小さい(サーバー用途ではコンパイル言語としてふるまう)。

しかもオブジェクト指向はあえて殺して使っている場合も多い。
(同名メソッドなどはバグの原因がわかりづらくなる。)

メジャーになると、欠点なんか誰も言わなくなる。
0736nobodyさん2006/05/21(日) 05:39:24ID:???
http://java.sys-con.com/read/45250.htm?CFID=284001&CFTOKEN=8D1F3492-114D-12D2-748B749EEAB77345
0737nobodyさん2006/05/21(日) 06:02:41ID:???
>>733-735
言っていい?
そんなに Java がいいなら Java 使えば?
0738nobodyさん2006/05/21(日) 06:30:43ID:???
>>737
JAVA使いたいんだが、JAVAはエンタープライズに向かったので個人向けソフトがほとんど無い。
だから、mod_perlで開発環境が欲しい。

本音を言えば、言語なんかどれも変わらん。
欲しいのは開発環境。
0739nobodyさん2006/05/21(日) 07:11:29ID:???
...と既存の資産。
要はできる限り楽がしたい。
0740nobodyさん2006/05/21(日) 08:21:55ID:???
>>738
じゃあこんなところでクダ巻いてないで自分で開発環境作って勝手にやれよ。
mod_perl のスレで JAVA、JAVA、JAVA、JAVA 不快なだけだ。
Eclipse でも使っとけボケ。
0741nobodyさん2006/05/21(日) 08:50:21ID:???
>>738
実はEclipseのEPICも使っているが。
mod_perl環境 ×

別にJAVAが好きではない。
デバッグ環境の話がしたかっただけ。
言語は関係ない。
0742nobodyさん2006/05/21(日) 08:58:15ID:???
↑>>738×⇒740○
まあ、感情的になるな。

デバッグ環境を整えるのは大切なことだ。
mod_perlのためになる。
0743nobodyさん2006/05/21(日) 09:12:56ID:fMNVkr/p
JAVA使えばいいじゃんって言ってる人は本質が全然見えてないヤツ
あるいは日本語が不自由か
0744nobodyさん2006/05/21(日) 09:36:25ID:???
てゆーか、JavaをJAVAと書いてる人って
本当にまともにJava使ったことあるのかなってゆーか
厨っぽいってゆーか
0745nobodyさん2006/05/21(日) 11:53:20ID:???
使ったことないけど、ActiveStateのKomodoってどうなんだろうね
0746nobodyさん2006/05/21(日) 12:36:56ID:???
http://eclipsewiki.net/eclipse/?%A5%EA%A5%E2%A1%BC%A5%C8%A5%C7%A5%D0%A5%C3%A5%B0
これ使ったことあるが、プロセス間通信を使ったやり方でmod_perlも可能性あると思うんだ。
FastCGIはもろ移植できそう。
0747nobodyさん2006/05/21(日) 12:38:14ID:???
>>743
> JAVA使えばいいじゃんって言ってる人は本質が全然見えてないヤツ

その本質って何だろう?
0748nobodyさん2006/05/21(日) 12:48:00ID:???
>>747
mod_perlに足りないものは、デバッグ環境。
でいいんでないの。
0749nobodyさん2006/05/21(日) 12:58:20ID:???
デバッグ環境ってそんなに便利なんかね。
0750nobodyさん2006/05/21(日) 13:03:32ID:???
デバッグ環境なんか興味ないから別スレでやってくれよ。
0751nobodyさん2006/05/21(日) 13:05:52ID:???
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
0752nobodyさん2006/05/21(日) 13:08:02ID:???
>>751
ぶっちゃけ、それで足りてる。
0753nobodyさん2006/05/21(日) 13:11:25ID:???
Perl/CGI開発環境の整備
http://www.harukaze.net/~mishima/perl/cgi-debug-env/dev-env.html
0754nobodyさん2006/05/21(日) 13:17:56ID:???
CGI等Perlスクリプトのデバッグ方法
http://www.harukaze.net/~mishima/perl/cgi-debug-env/deb-tech.html
0755nobodyさん2006/05/21(日) 13:33:29ID:???
>>752
開発環境の重要性への認識が全然ない。
「今、できてるんだからそれでいいじゃないか。」
これは、悪い習慣だよ。
■ このスレッドは過去ログ倉庫に格納されています