【激速】mod_perl SpeedyCGI FastCGI【激速】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/06/05(月) 20:01:09ID:+YcYjDiDhttp://perl.apache.org/
SpeedyCGI
http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod
前スレ
mod_perlを使おう!
http://pc8.2ch.net/test/read.cgi/php/1005122528/
ー二三ヘ( ゚∀゚)ノ
0446nobodyさん
2006/07/03(月) 12:04:55ID:???> Speedyが同時多発接続でgdgdになってきてるのはエビに食われてるからだと思うんだよね。
んだな。
が、他クライアントをつなぐと今度はNICにCPU食われる。
結局はNICのCPU消費とどっちが大きいかだけの違いでねえ?
いいんでねえ、localhost。
0447nobodyさん
2006/07/03(月) 12:54:22ID:???http://www.nicmania.net/
0448nobodyさん
2006/07/03(月) 19:21:39ID:???それは、何だ、Javaと並ぶ巨大宗教Perlの莫大な遺産の活用じゃない。
0449nobodyさん
2006/07/03(月) 22:39:17ID:???まあ、まるで役にたたないとは言わないが、仕事でやるなら最初からやり直させるな。
0450nobodyさん
2006/07/03(月) 22:47:49ID:???0451nobodyさん
2006/07/03(月) 22:49:14ID:???0452nobodyさん
2006/07/03(月) 22:49:51ID:???0453nobodyさん
2006/07/03(月) 22:50:43ID:???つーか、
http://pc8.2ch.net/test/read.cgi/php/1151250398/
あたりに書くつもりだった誤爆じゃない?
書き込み時刻を見ると、なんとなく辻褄が合う。
スルーしなくっちゃ。
ここのスレは、おそらく住人が10人以下の人里離れた小さな村。
普通の初心者は近付かない。
0454nobodyさん
2006/07/03(月) 22:56:10ID:???> CPU100%にならないように気をつけながらベンチマークとるのが普通なんだが。
処理をフル回転で速く終わらせ、スコアを競うのがベンチマークw
0456nobodyさん
2006/07/03(月) 23:06:38ID:???0462nobodyさん
2006/07/04(火) 02:20:16ID:???エビとニクどっちが食うんだろう?
0463nobodyさん
2006/07/04(火) 02:21:17ID:???0464nobodyさん
2006/07/05(水) 12:19:01ID:???0465nobodyさん
2006/07/05(水) 18:20:09ID:???0466nobodyさん
2006/07/06(木) 02:34:15ID:???>ちなみに、Hello Worldでテストする分には、mod_speedycgiより、PHPの方が速いんですが、
PHPの環境は?まさか普通のapacheモジュール版と比較したりしてないよね?
0467nobodyさん
2006/07/07(金) 20:11:33ID:hqAFRSkq0470nobodyさん
2006/07/08(土) 00:11:01ID:???0471nobodyさん
2006/07/08(土) 11:43:01ID:???PHPは、短いソースでは速いですね。
ちなみに、apxs -g -n hello とかで出来る、hello worldなソースをmake;make installすると、
私がちょっとテストした環境で、mod_speedycgiの2.5倍程度の速度が出ました。
Cを使うなら、handler書くのが良いのかなと思いました。
そこからすると、mod_perlも、Registry使わずに、handlerな形にすると、順位に変動が
ある様な気もしています。
まあ、アプリが大きくなれば吸収されてしまう差なので、速度の為だけにそうする必要が
あるケースは稀でしょうが。
0472nobodyさん
2006/07/08(土) 16:05:57ID:???apache1.3の環境でspeedyCGIを入れ、mt.cgiの先頭を書き換えて実行してみました。
1回目は無事表示されるんですが、リロードするとInternalServerErrorが。
何かインストールで失敗してるんでしょうか…?
0473nobodyさん
2006/07/08(土) 16:45:31ID:???0474nobodyさん
NGNGmtの前に、hello.cgiとか動かしてみればいいんでないすか。
0475nobodyさん
2006/07/08(土) 19:13:56ID:???何か内容が反対に受け取られてるような気が?
補足すると
mod_speedycgiのHello WorldにはCのHello Worldも負けてるのに
比較対照がノーマルPHPなわけはないだろう。
こう言いたかったのよ。
0476472
2006/07/08(土) 19:20:32ID:???質問スレではないかもしれないとは思ったのですが、
皆さんはかなりお詳しいと思い、悩んだのですが思い切って質問させていただきました。
気分を害しましたら、ごめんなさい。
>>474
レスありがとうございます。
「hello.cgi」というのは、要するにテスト用のcgiを作成して、ということでよろしいですか?
googleなどでヒットするhello.cgiを試しに作ってみて、先頭部分を# !/usr/bin/speedyと
書き換えてみましたところ、無事リロードしても表示されました。
となると、問題はmt.cgiなのでしょうか…?
googleでいろいろ調べまくったのですが、どうも有益な情報が見つかりません。
movabletypeでspeedyCGIを動かしている方々、どうぞお知恵を拝借ください…。
0477nobodyさん
2006/07/08(土) 19:56:46ID:???>1回目は無事表示されるんですが、リロードするとInternalServerErrorが。
グローバル変数の初期化ができてない典型のように思えますが、
そのmtはmod_perlやFastCGIでは正常に動き、SpeedyCGIのみ動かない状態でしょうか?
mtは触ったことがないですが、mod_perlかどうか判定してコードを切り替えているという事は聞いた事があります。
≠mod_perlの判定のためCGI用のコードが実行されている?
後、mtはSpeedyCGIよりFastCGIの方が情報が多いので楽かも。
http://as-is.net/blog/archives/001042.html
ここが有名。
0478nobodyさん
NGNGmod_perl用に条件分岐しまくりワロタ
0479471
2006/07/08(土) 20:48:33ID:???mod_speedycgiのHello WorldにはCGI/CのHello Worldも負けてるのに
比較対照がCGI/PHPなわけはないだろう。
と言う意味で解釈していたのですが、これで良いんですよね?
処理系の速度としては、C > perl > PHP というのは周知の事実。
PHPが速いと言われるのは、Apacheのmoduleとして動かしているからで、
この起動速度は、PHPが速く、小さいコードでは、その差が効いてPHPが
速い。
この先は触れていないんですが、、コードが大きくなると、処理系の遅さが
効いてきて、perl系に抜かれるという意味で書いてました。
0481472
2006/07/08(土) 21:07:45ID:???レスありがとうございます。
FastCGIは試していないのですが、mod_perlをインストールする際にエラーが出て
インストールできなかったので、他の方法がないのかと探していてこのスレへたどりつきました。
ここを見ていると、mod_perlはいまいち評価が高くないように感じ、speedyCGIを試していたところでした。
>グローバル変数の初期化ができてない典型のように思えますが、
まさにそうだと思うのですが、対処法がわかりません…。
参考サイトを見ながら、FastCGIの導入を勉強してみます。
レスどうもありがとうございました。大変助かりました。
0482477
2006/07/08(土) 21:22:44ID:???あえてSpeedyCGIを試すなら、mod_perl判定フラグをtrueにすればいいのではないかと思いますが。
SpeedyCGIとFastCGIはメモリ消費も速度も近いので、楽な方を選ぶべきだと思います。
0483477
2006/07/08(土) 21:49:31ID:???後、忘れていました。
FastCGIはScriptAliasがかかっているDirでは正常に動かないです。
mtのインスコ先にScriptAliasがかかっている場合は外してしまって、
変わりに
Alias /cgi-bin/ "......."
<Location /cgi-bin/>
AddHandler cgi-script .cgi
fastcgi-script .fcgi
.....
</Location>
のような感じで設定したらいいです。
0484477
2006/07/08(土) 21:50:32ID:???○AddHandler fastcgi-script .fcgi
0485477
2006/07/09(日) 00:58:13ID:???×<Location /cgi-bin/>
○<Location /cgi-bin>
もう一つ、
http://as-is.net/blog/archives/001042.html
の通りにやるなら、
AddHandler fastcgi-script .fcgi
これは要らないです。
間違いだらけ、本当にすいません。
0486477
2006/07/09(日) 01:02:01ID:???AddHandler fastcgi-script .fcgi
やっぱり要ります。
連投しまくり、すいません。
0487472
2006/07/09(日) 01:17:20ID:???477さん、いろいろとありがとうございます。
あれからひたすら何度も試しているのですが、実は全然うまくいきません(つД`)
Apache1.3にfcgiとmod_FastCGIを適用させようとしているんですが、エラーが…。
httpd.confに以下の内容を書き込んでapacheを再起動します。
LoadModule fastcgi_module libexec/apache/mod_fastcgi.so
AddModule mod_fastcgi.c
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
FastCGIConfig -maxClassProcesses 4 -minProcesses 1
FastCgiIpcDir /tmp
</IfModule>
すると、
Syntax error on line 206 of /usr/local/apache/conf/httpd.conf:
Invalid command 'LoadModule', perhaps mis-spelled or defined by a module not included in the server configuration
とエラーが返されます。サイトの説明通りにやっているんですが…。
0488477
2006/07/09(日) 01:43:44ID:???> LoadModule fastcgi_module libexec/apache/mod_fastcgi.so
エラーログの指摘だとこの行のエラーですよね。
多分、>487さんの環境では、
LoadModule fastcgi_module modules/mod_fastcgi.so
これでいいんではないかと思います。
0489487
2006/07/09(日) 02:10:48ID:???いろいろとありがとうございます(つД`)2chでこんなに親切にされたの初めてです。
477さんのおっしゃるとおり試してみたのですが、またエラーが出てしまいました。
明日改めてfastcgiを入れ直してみようかと思います。
それで、もしよろしければこちらの板でずっと続けてしまうと皆さんにご迷惑をおかけしているような
気もしますので、メールで教えていただけませんでしょうか…。
もう、藁にもすがる思いなんです…。
メアド欄にアドレスを入れましたので、もしよろしければお返事ください。
本当にありがとうございました。
0490477
2006/07/09(日) 02:17:43ID:???0491nobodyさん
NGNG0493nobodyさん
2006/07/11(火) 14:51:25ID:EY3GIFAeどうしたらいいんでしょう?
0494nobodyさん
2006/07/11(火) 18:03:59ID:???0495nobodyさん
2006/07/11(火) 21:22:46ID:EY3GIFAeperlです。すいません、自己解決しました。
0496nobodyさん
2006/07/12(水) 11:09:51ID:???CGI::Sessionを使うときに注意すべき点があれば
教えてください。
0497nobodyさん
2006/07/12(水) 21:56:44ID:???0498nobodyさん
2006/07/18(火) 01:51:23ID:???0499nobodyさん
2006/07/19(水) 15:16:27ID:???依存でApache::Constantsがないと言われます。
それで、cpanでApache::Constantsをインストしようとすると、
************* WARNING *************
Your Perl is configured to link against libgdbm,
but libgdbm.so was not found.
You could just symlink it to /usr/lib/libgdbm.so.2.0.0
************* WARNING *************
Enter `q' to stop search
Please tell me where I can find your apache src
[../apache_x.x/src]
と警告が二つ出てしまいます。/apache/src なんてどこにもないんだけど、これはなんでしょか?(-o-;
0500nobodyさん
2006/07/19(水) 22:40:18ID:???とかなんじゃね
0501nobodyさん
2006/07/19(水) 22:46:09ID:???> ************* WARNING *************
>
> Your Perl is configured to link against libgdbm,
> but libgdbm.so was not found.
> You could just symlink it to /usr/lib/libgdbm.so.2.0.0
Perlがgdbm前提でビルドされているのに、gdbmの実体がみつからない。
/usr/lib/libgdbm.so.2.0.0に実体へのシンボリックリンクを作れ。
> ************* WARNING *************
> Enter `q' to stop search
> Please tell me where I can find your apache src
> [../apache_x.x/src]
qを入力した後アパッチソースのパスを入力しろ。
以上で間違いないと思うが。
0502499
2006/07/19(水) 22:51:32ID:NWioDOXW/root/.cpan/build/mod_perl-1.29/src/modules/perl/apache_inc.h
/usr/share/doc/mod_perl-2.0.2/docs/devel/core/apache_integration.pod
/usr/share/doc/mod_perl-2.0.2/docs/user/porting/code/apache_mp3_2.diff
/usr/share/doc/mod_perl-2.0.2/docs/user/porting/code/apache_mp3_7.diff
/usr/share/doc/mod_perl-2.0.2/docs/user/porting/code/apache_mp3_9.diff
/var/www/icons/apache_pb.gif
/var/www/icons/apache_pb.png
/var/www/icons/apache_pb2.gif
/var/www/icons/apache_pb2.png
/var/www/icons/apache_pb2_ani.gif
/var/www/manual/images/apache_header.gif
なのですが・・・(-o-;
0503499
2006/07/19(水) 22:55:32ID:NWioDOXWスレ違い失礼します。。
gdbmの実体とはlibgdbm.soですよね?見当たらないんですが。。(-o-;
gdbmってなんでしょ?調べてきます。perlは問題なく動いてはいるんですが。。
0506499
2006/07/20(木) 08:49:55ID:YgRADElF# locate gdbm
/usr/lib/libgdbm.so.2
/usr/lib/libgdbm.so.2.0.0
/usr/lib/python2.4/lib-dynload/gdbmmodule.so
/usr/local/man/man7/maildropgdbm.7
/usr/local/share/maildrop/html/maildropgdbm.html
/usr/local/src/maildrop-2.0.2/gdbmobj
/usr/local/src/maildrop-2.0.2/maildropgdbm.7
/usr/local/src/maildrop-2.0.2/maildropgdbm.html
/usr/local/src/maildrop-2.0.2/gdbmobj/.deps
/usr/local/src/maildrop-2.0.2/gdbmobj/Makefile
/usr/local/src/maildrop-2.0.2/gdbmobj/Makefile.am
/usr/local/src/maildrop-2.0.2/gdbmobj/Makefile.in
/usr/local/src/maildrop-2.0.2/gdbmobj/aclocal.m4
/usr/local/src/maildrop-2.0.2/gdbmobj/config.h
/usr/local/src/maildrop-2.0.2/gdbmobj/config.h.in
/usr/local/src/maildrop-2.0.2/gdbmobj/config.log
/usr/local/src/maildrop-2.0.2/gdbmobj/config.status
/usr/local/src/maildrop-2.0.2/gdbmobj/configure
/usr/local/src/maildrop-2.0.2/gdbmobj/configure.in
/usr/local/src/maildrop-2.0.2/gdbmobj/gdbmobj.c
/usr/local/src/maildrop-2.0.2/gdbmobj/gdbmobj.h
/usr/local/src/maildrop-2.0.2/gdbmobj/gdbmobj2.c
0507501
2006/07/20(木) 09:01:09ID:???通常、
/usr/lib/libgdbm.so.2は
/usr/lib/libgdbm.so.2.0.0へのシンボリックリンク。
#cd /usr/lib
#ln -s libgdbm.so.2 libgdbm.so
で解決するかと。
0508499
2006/07/20(木) 09:15:28ID:YgRADElF/usr/local/src/maildrop-2.0.2/gdbmobj/gdbmobj3.c
/usr/local/src/maildrop-2.0.2/gdbmobj/libtool
/usr/local/src/maildrop-2.0.2/gdbmobj/stamp-h1
/usr/local/src/maildrop-2.0.2/gdbmobj/testgdbm.C
/usr/local/src/maildrop-2.0.2/gdbmobj/testsuite
/usr/local/src/maildrop-2.0.2/gdbmobj/testsuite.txt
/usr/local/src/maildrop-2.0.2/gdbmobj/.deps/gdbmobj.Plo
/usr/local/src/maildrop-2.0.2/gdbmobj/.deps/gdbmobj2.Plo
/usr/local/src/maildrop-2.0.2/gdbmobj/.deps/gdbmobj3.Plo
/usr/local/src/maildrop-2.0.2/gdbmobj/.deps/testgdbm.Po
/usr/local/src/maildrop-2.0.2/maildrop/maildropgdbm.7
/usr/local/src/maildrop-2.0.2/maildrop/maildropgdbm.html
/usr/share/doc/gdbm-1.8.0
/usr/share/doc/gdbm-1.8.0/COPYING
/usr/share/doc/gdbm-1.8.0/NEWS
/usr/share/doc/gdbm-1.8.0/README
/usr/share/doc/man-pages-ja-20060115/translation_lists/GNU_gdbm.translation_list
/usr/share/man/ja/man3/gdbm.3.gz
/usr/share/mime/application/x-gdbm.xml
です
0509499
2006/07/20(木) 13:36:45ID:???FedoraCore5なんですが、ググってもそれらしい情報が探し出せない(-o-;
Apache::SSIってあんまり使われてないのかな;;
0510501
2006/07/20(木) 22:00:08ID:???> ************* WARNING *************
> Enter `q' to stop search
> Please tell me where I can find your apache src
> [../apache_x.x/src]
ここで'q'を打った後、
/usr/include/httpd
か
/usr/lib/httpd/build
を入力。
これでいいかも。
断っておくがFedoraCoreほとんど知りません。
RPMの中身からの憶測なので違ったらすまそ。
0511nobodyさん
2006/07/23(日) 03:21:11ID:???環境も整ってきたので、適当にベンチとってみました。
予想以上の結果にビックリしてます。
実際運用している物と同じシステムで負荷の高い(DBIでSELECT)メインスクリプトに
5つほどライブラリでばらしています。
ab -n 1000 -c 10
PerlRun+DBI 10.60 [#/sec]
PerlRegistry+DBI 44.74[#/sec]
PerlRegistry+Apache::DBI 103.67[#/sec]
mod_speedycgi+DBI 219.51[#/sec]
数回とりましたが、おおよそこんなもん
速度とメモリ使用量はすばらしいんだけどな〜 mod_speedycgiがわからない事だらけ。
DBIの扱いにクセとかあるのかな?なんとかDBI接続できてるんだけど不安定(同一ソースで成功したり失敗したり)
デバッグは大変だと思う、たんに-wをつけていてもerror_logに入ってこないヶ所も多々あるように感じる。
DBIのエラーや不都合をさぐるのに$sth->errstrも効果無い?のでDBI->trace()でさぐってます。
ググってそれなりの資料が出てくる日まで、速度とメモリ使用量のメリットをあきらめてmod_perlにもどそうかと検討中ですw
0513nobodyさん
2006/07/23(日) 05:18:43ID:???パラメータ指定するか、wgetをcron経由で起動すればすむけど。
0514nobodyさん
NGNGここにも定義されてるのをチェックするって書いてあるしな
0515nobodyさん
2006/07/23(日) 12:00:15ID:???> ・データベースへの接続を持続させたままにするにはどうすればよいですか?
> グローバルの値は実行をまたがって保持されるので、これを行う一番よい方法は
> 接続をグローバル変数に格納し、実行のたびにその変数が既に定義されているか
> をチェックすることです。
をやっているの?
0516nobodyさん
2006/07/23(日) 12:09:39ID:???> PerlRun+DBI 10.60 [#/sec]
> PerlRegistry+DBI 44.74[#/sec]
> PerlRegistry+Apache::DBI 103.67[#/sec]
> mod_speedycgi+DBI 219.51[#/sec]
これって非常に不思議な結果なのだけど、それぞれどんな設定なのかな?
0517511
2006/07/23(日) 16:22:12ID:???テスト中の出来事なので1時間以内にキャッシュにアクセスしています。
wgetをcron経由の技は違うシーンでパクらせて頂きます。
>514
use CGI::SpeedyCGI;
my $sp = CGI::SpeedyCGI->new;
print "Running under speedy=", $sp->i_am_speedy ? 'yes' : 'no', "\n";
↑はチェック済みでyesが出ました。↓はこの後に試してみます。
if (eval {require CGI::SpeedyCGI} && CGI::SpeedyCGI->i_am_speedy) {
>515
use vars qw($dbh);
unless (defined($dbh)) {
$dbh = DBI->connect(***, ****);
}
ちなみに↓も試しました。
$dbh = DBI->connect_cached(***, ****);
use varsでもmy $dbhでも同じ状況です。
更新後に成功して2回目でDBIがコケる事がよくあります。
キャッシュがカギか!と思わせてたまに、2回目も問題なくクリアしたりとさっぱり原因がわかりません。
0518nobodyさん
2006/07/23(日) 16:24:33ID:???【環境】
Fedora Core5
↓ソースからインストール
httpd-2.0.58 prefork
PostgreSQL8.1.4 DBI-1.51 DBD-Pg-1.49 CGI-SpeedyCGI-2.22 mod_perl-2.0
【mod_perlのhttpd.conf】
LoadModule perl_module modules/mod_perl.so
<Files *.pl>
SetHandler perl-script
PerlModule Apache::DBI #ベンチでApache::DBI以外はコメントアウト
PerlHandler Apache::Registry #PerlRunの場合はApache::PerlRun
PerlSendHeader On
PerlInitHandler Apache::StatINC
Options +ExecCGI
</Files>
PerlFreshRestart On
【mod_speedycgiのhttpd.conf】
LoadModule speedycgi_module modules/mod_speedycgi.so
<IfModule mod_speedycgi2.c>
AddHandler speedycgi-script .pl
<Location />
Options ExecCGI
</Location>
</IfModule>
↑どこかの板からパクったのをそのままベンチで使用
0519nobodyさん
2006/07/23(日) 16:46:30ID:???各値が適切かどうか検証もせずに?
0521520
2006/07/23(日) 17:54:05ID:???パクる←表現がおかしかったです。
書き方をマネしたと解釈してください。
パスはチェック済みです。
mod_speedycgi.soやmod_speedycgi2.cがどのような動きをするかはまるで分かりません。
とりあえず試して問題なければOKなレベルでmod_speedycgiを動かしています。
0522nobodyさん
2006/07/24(月) 00:09:47ID:???> use CGI::SpeedyCGI;
> my $sp = CGI::SpeedyCGI->new;
mod_speedycgiの下でSpeedyCGIを呼び出すという不自然なコードになってない?
一度httpd.confからmod_speedycgiの設定を外し、SpeedyCGIのみでどうなるか確認すべきではない?
0523nobodyさん
2006/07/27(木) 22:44:38ID:???0524nobodyさん
2006/07/27(木) 23:27:34ID:???0525nobodyさん
2006/08/01(火) 20:45:09ID:PBUCPfNT0526nobodyさん
2006/08/02(水) 06:54:06ID:???0527nobodyさん
2006/08/02(水) 15:58:35ID:???0528nobodyさん
2006/08/02(水) 22:12:09ID:???0529nobodyさん
2006/08/03(木) 00:02:46ID:???0530nobodyさん
2006/08/03(木) 01:29:14ID:???0531nobodyさん
2006/08/16(水) 04:31:26ID:???正常に再読込しません。Ver1.99の時は問題ありませんでした。
ReloadDebugをonにしてみると該当する.plに対してチェックが掛かってることは
確認しました。相対パスが駄目なのかと思い絶対パスにしてみたけど改善されず。
結局%INCのファイルを独自に検査して更新があったらdeleteするというルーチン
組み込んで希望の動作が出来てますが出来ればReloadで済ましたいです。
環境はFedora core5 mod_perl-2.0.2-5.1 perl-5.8.8-5です。
0532nobodyさん
2006/08/16(水) 15:33:50ID:???0533nobodyさん
2006/08/16(水) 15:38:54ID:???Apache2::Reload関係のhttpd.confをさらすべき。
後、Ver1.99の時とhttpd.confは同じもの?
0534531
2006/08/18(金) 12:39:47ID:???検証は出来るだけ最小設定で行いました。
<VirtualHost *>
略(ServerName、DocumentRootのみ設定)
PerlModule Apache2::Reload
</VirtualHost>
以下のオプションを色々変えたりコメントアウトしながら検証しました。
# PerlInitHandler Apache2::Reload
# PerlSetVar ReloadDirectories "/home ./"
# PerlSetVar ReloadDebug On
# PerlSetVar ReloadAll Off
# PerlSetVar ReloadModules "module*"
Ver1.99の時は
PerlModule Apache::Reload
のみで期待通りの動作をしていました。
0535nobodyさん
2006/08/18(金) 13:05:02ID:???http://d.hatena.ne.jp/naoya/20060108/1136692447
現在、mod_perl には互換性のない三つのバージョンが存在してます。
mod_perl 1.0 (1.29)
mod_perl 1.99
mod_perl 2.0 (2.0.2)
0536nobodyさん
2006/08/18(金) 14:32:05ID:???> 正常に再読込しません。
正常じゃない状態がどういう状態なのかよくわからんのだが、
ttp://d.hatena.ne.jp/holidays-l/20060731/p2
こういうことなんジャマイカ?
0537gan
2006/08/19(土) 06:24:16ID:jPBCnjia【環境概要】perl5.8.3、apache、Linux
【状態】speedyCGIのモジュールをCPANのコマンドラインからインストール済み
【使用可能か?】一回目のスクリプト実行は成功、しかし2度目の実行では
エラーになります。スクリプト常駐の寿命を5秒に設定しといて、一回スクリ
プトを実行させると成功、続けて5秒以内に他のページをアクセスすると
エラーとなりますが、5秒以上待てば(スクリプトが死ぬまで待って、新規に
スクリプトを読み込ませれば)成功します。あきらかにメモリ上に
存在するスクリプトを2回目以降呼び出すとエラー、という状況です。
【他にもモジュールを使用しているか?】
Net::amazonのモジュールを使用しており、エラーになる場合はこの
モジュールを利用して searach -> (asin => "xxxxxxxxx")とやると
以下のようなエラーが吐かれます(1度目は正常、2度目からエラー)
【エラーログ】
Premature end of script headers: mr.cgi, referer: http://airrack.jp/
Undefined subroutine &main:: called at /usr/lib/perl5/site_perl/5.8.3/Log/Log4perl.pm line 133.,
referer: http://hogehoge.jp/hoge
【エラーログに出てくるLog4perlについて】
Log4perl.pmというモジュールは、おそらくNet::Amazonがログをはくために
使っていると思われますが、詳細はよく分かりません。どちらのモジュールも最新
に上げています。
Log4perlモジュール内で変なキャッシュが残っているのでしょうか?
その場合モジュールをいじって直すしかないのでしょうか・・・。
googleで1日中検索しましたが情報がありませんでした。
かなり嵌ってしまいました。speedyCGIでNet::Amazon使ってらっしゃる方
で同様の状態になっている方いませんか?よろしければ情報いただけたら。。
よろしくお願いいたします。
0538531
2006/08/19(土) 07:14:50ID:???どうやら536さんの記事に諸に当てはまるようなので記事に書いてあるとおり
パッチを当てて再度検証しこちらで報告しようと思います。
今は酔っぱらい人間です。
0539nobodyさん
2006/08/19(土) 13:45:18ID:???本人もわかってるようですが、グローバル変数の問題なのは間違いないでしょ。
まず基本的な事から確認。
メインのスクリプトにはグローバル変数の初期化処理がある?
0540gan
2006/08/19(土) 18:55:37ID:jPBCnjiaレスありがとうございます。
>メインのスクリプトにはグローバル変数の初期化処理がある?
グローバル変数の初期化処理があるというのは
メインのスクリプトにてmy $hogeとすることで初期化を行っています。
もしかしてmy $hoge=''とする必要があるのでしょうか?
0541nobodyさん
2006/08/19(土) 19:18:24ID:???my $hoge;
では初期化されないです。
(通常のCGIならOK)
> もしかしてmy $hoge=''とする必要があるのでしょうか?
そうです。
0542nobodyさん
2006/08/19(土) 22:02:30ID:???my $hoge;
でいいはずだけどSpeedyCGIだと違うの?
undefと空文字では意味合いが全く違うと思うんだけど。
0544nobodyさん
2006/08/20(日) 01:11:35ID:???0545nobodyさん
2006/08/20(日) 01:36:28ID:???■ このスレッドは過去ログ倉庫に格納されています