2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

【激速】mod_perl SpeedyCGI FastCGI【激速】

1 :nobodyさん:2006/06/05(月) 20:01:09 ID:+YcYjDiD.net
mod_perl
http://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/

ー二三ヘ( ゚∀゚)ノ

805 :802:2008/12/21(日) 20:46:58 ID:???.net
すいません、今、思いついてCGIのプロセスIDを調べてみたら
やっぱりブラウザのリロードごと、毎回IDが新しくなっていました。
>>804の件、鯖の方に問い合わせてみます。

話がずれてしまったけど、非CGIのmod_perlスクリプトの方は
レン鯖ではあきらめるふんぎりがつきました。ありがとうございました〜!

806 :nobodyさん:2009/01/28(水) 14:35:27 ID:???.net
すみません、教えてください。

RHEL4上で、Apache2+ModPerl2 の環境があります。

1つの仮想ホスト上に複数(現状4つ)のシステムを同居させてます。
つまり、DocumentRootには、4つのログインページがあり、ログインに成功するとそれぞれ
サブディレクトリに移動します。

それぞれのシステムのセッション管理をCGI::Sessionにやらせています。
セッションIDは、それぞれのシステムでCookie名を変えて発行しています。

セッション情報を取得するために、

my $cgi = new CGI;
CGI::Session->name('SYS1SESSID');
my $session = new CGI::Session("driver:hoge",$cgi,{Handle=>$dbh});

といった感じで使いまわしていたんですが、「ModPerl環境だと、CGI::Session::NAMEがモジュールローカル
なので、new CGI::Session()で他のIDを使おうとしてしまうかもしれない」 という理解は正しいでしょうか?
結構頻繁にアクセスされているシステムです。

ログイン対象システムのセッションIDを正確に取るには、

my $cgi = new CGI;
my $sid = $cgi->cookie('SYS1SESSID');
my $session = new CGI::Session("driver:hoge" ,$sid, {Handle=>$dbh});
の様に、使うべきセッションIDを指定しなければならない という理解で合っているでしょうか?

CGI::Session は、現状、4.20 です。


807 :nobodyさん:2009/01/30(金) 17:46:30 ID:FjWtrZEq.net
代理age

808 :nobodyさん:2009/01/31(土) 16:58:46 ID:8MtMaIxA.net
ちょっと通りますが、
Windows XPで、Apahc2+mod_perl2で、下のエラーが出るときの対処方法って知ってますか?
failed to resolve handler `MyHandler': Can't load 'C:/Perl/site/lib/auto/APR/Pool/Pool.dll' 〜

809 :nobodyさん:2009/01/31(土) 18:12:00 ID:???.net
dllがないんじゃねーの?

810 :nobodyさん:2009/01/31(土) 18:57:57 ID:8MtMaIxA.net
いや、普通にあるんだけどね。

811 :nobodyさん:2009/01/31(土) 19:07:11 ID:???.net
>>810
あるならエラー出ない気もするんだが。。。
今出してる情報だけだとあとはそのエラー出てるファイルまでの
ディレクトリ(パス)が違うか、権限(実行権か読み取り権)が無いかだと思う。

812 :nobodyさん:2009/01/31(土) 19:12:38 ID:???.net
Windowsだし単純にあぱっちとぱーるのインストールドライブが違うんじゃね?
ドライブが同じでもあぱっちのほうのぱす検索部分修正してないとか
初期設定をきちんとできてない素人質問な気はする

813 :nobodyさん:2009/01/31(土) 19:32:31 ID:8MtMaIxA.net
>>811
ぐぐってもそんな感じで解決してたな。
でもパスとかちゃんと合ってるんだよな。

814 :nobodyさん:2009/01/31(土) 19:35:53 ID:???.net
>>813
ドライブ跨ってない?
>>812も言ってるがWinのドライブは越せないよ

815 :nobodyさん:2009/01/31(土) 19:39:02 ID:8MtMaIxA.net
ドライブはCドライブ一個しかないからそこは大丈夫だな。

816 :nobodyさん:2009/01/31(土) 19:47:00 ID:???.net
>>815
※mod_perl2からはPerlSetEnv PERL5LIB じゃなくて PerlSwitches -Iに変わった

これは試した?
てか何を試したか書かないと一からこっちが聞いて回答して
やった、大丈夫とかの返事になりムダが多い
情報の小出しはどこに行っても嫌われるぞ、エスパースレかどっかいけよ


817 :nobodyさん:2009/01/31(土) 19:50:58 ID:???.net
もう一度Apache2.2+mod_perl2か、バージョン確認かな。

818 :nobodyさん:2009/01/31(土) 19:58:11 ID:8MtMaIxA.net
Win32 Binary including OpenSSL 0.9.8i (MSI Installer): apache_2.2.11-win32-x86-openssl-0.9.8i.msi
OpenSSL入りだと何か違うのかな?なしで一回入れなおしてみようかな。

819 :nobodyさん:2009/01/31(土) 19:58:55 ID:???.net
無敵の再インストールという道もある

820 :nobodyさん:2009/01/31(土) 20:00:18 ID:8MtMaIxA.net
ここって、普通ひっかからないとこだよね

821 :nobodyさん:2009/01/31(土) 21:48:22 ID:???.net
普通の定義が広すぎて返答が難しい。
人それぞれだからね、「普通」なんて。

822 :nobodyさん:2009/02/01(日) 04:37:11 ID:???.net
perl-status は使えないのかい?
EnvironmentでPathチェックは出来ると思うが

823 :808:2009/02/01(日) 15:15:23 ID:XdqdLFq+.net
>>808です。
問題解決しました。
perl 5.8.8をつかってたんだけど、perl 5.8.9にしたら直りました。
mod_perlの.pmファイルにperl -cでチェックかけてたら、なんか「perl58.dll になんとかていうエントリポイントなんてないよ」
っていうエラーがでたんで、調べたら perl 5.8.9から新しく追加されたエントリポイントなんだって。

824 :nobodyさん:2009/02/01(日) 15:25:42 ID:???.net
>>823
解決おめ。

825 :_:2009/04/01(水) 14:59:15 ID:???.net
http://modperlite.org/
どうよ

826 :nobodyさん:2009/07/16(木) 22:14:00 ID:Gas3E2EY.net
mod_perlのオライリー本「Apache拡張ガイド」の上325P、
requiresメソッドは「カレントディレクトリとその親ディレクトリに存在するすべてのrequireディレクティブ…」を取り出すって書いてあるけど、間違いじゃないか?
継承はするけど追加じゃなくて上書きするから、すべてじゃないよね。


827 :nobodyさん:2009/07/25(土) 21:10:58 ID:0I94bAC0.net
FastCGIについて質問です
環境:debian+lighttpd+fcgi(C)

FCGI_printfで
Cntent-Length: xxxxとかConnection: closeとか
付けてるつもりなんですけど、
実際にクライアントと通信させると送られてきません。
(勝手にチャンク転送になったりします)

あとFCGIでプロキシみたいなものを作ろうとしていて
while(1){
r_ret = recv(socket, buf, sizeof(buf), 0);
FCGI_fwrite(buf, r_ret, 1, FCGI_stdout);
}
みたいなコードを書いてますがFCGI_fwriteで書き込んだ
データ全てが送られないのですが、
(recv終了時点ではnバイトのデータを持ってても、
 クライアントにnバイト送られなかったり)

コードで指定してるとおりに動作させたいんですが
lighttpd.conf等の設定が悪いんでしょうか?

828 :nobodyさん:2009/07/25(土) 21:19:56 ID:???.net
lighttpdかーそっちはわからんけど

例えばApacheの場合は、Content-LengthとかConnectionとか
そういうのを取り扱うのはHTTPサーバーの役割だって考えだから、
CGIがそういうヘッダを付けてもApacheの都合で勝手にkeepaliveになったりチャンク転送になったりする

Apacheだろうとlightyだろうと、そういう思想が正しいと思う。
CGIはコンテントの中身だけ出してればいい。
そんなHTTPの範囲まで口を出すな、と。

829 :nobodyさん:2009/07/25(土) 23:13:36 ID:???.net
自分も前にApache+perlでCGI作った時とか
そのときも勝手にチャンクになったりしてたのは確認してました。
CGI系共通の動作なんですかね。
(Content-Length教えたのに削除するってのは微妙ですけど)

2番目の方はBODY部が変わるって致命的な動作なんで
なんかいい解決方法があればいいのですが

830 :nobodyさん:2009/07/25(土) 23:17:20 ID:???.net
HTTP1.1的にはチャンク転送はきちんとした転送方法で、
それは「BODYが変わった」とは言わないと思う。

チャンク転送がいやならHTTP1.0でリクエストすればいいのでは?

831 :nobodyさん:2009/07/26(日) 00:40:26 ID:???.net
すいません、2番目っていうのは
>あとFCGIでプロキシみたいなものを作ろうとしていて
>while(1){
>r_ret = recv(socket, buf, sizeof(buf), 0);
>FCGI_fwrite(buf, r_ret, 1, FCGI_stdout);
>}
ってほうの話です
チャンクとか抜きにしても明らかに不完全なデータしか
送られないって動作になるんです

追加情報ですが
1回あたりのFCGI_fwriteで書き込むサイズは256kBくらいです

832 :nobodyさん:2009/07/26(日) 08:57:56 ID:???.net
自己解決しました

FastCGI応答処理にて
Content-LengthなどCGIで削除される情報を消してContent-Typeだけにしたら
BODYの情報が書き換わるということはなくなりました

833 :nobodyさん:2009/10/12(月) 09:35:39 ID:Ndxd3B+x.net
apache1.3.41 + mod_speedycgiで動かしてるんですが、
通常のCGI(perlです)でSTDERRに向かって出力するとapacheがエラーログの方に
それを出力してくれるんですが、mod_speedycgi環境下で動かすと全く出てきません。
CGIの方を「#/usr/bin/speedy」とするとちゃんと出る(ある意味当たり前)ので、
mod_speedycgiのstderrの扱いがおかしいのかと思ってソースみたけどわけわかめ。
どなたか解決方法ご存じでしたら教えてください。だいぶググったけど見つからない・・


834 :nobodyさん:2009/10/17(土) 04:35:47 ID:???.net
plackつかえよおまえら

835 :nobodyさん:2009/10/22(木) 16:22:16 ID:???.net
833です。
とりあえずmod_speedycgi2.cあたりから見よう見まねでパッチ書いたら
うまくSTDERR -> エラーログに出るようになりました。
(長期間動かしたときどうなるかなどは未検証ですけど)


836 :nobodyさん:2009/12/13(日) 20:12:02 ID:???.net

一番新しいSpeedyCGI(mod_speedycgi/Apache2.2.3)のやつインストールして
SpeedyCGIで普通のやつ(hello worldとか)は動くのだけど
http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod
のサンプルコードが500errorで動かないのだけどヤバイかな…?
誰かご教示ください

837 :nobodyさん:2009/12/13(日) 23:00:07 ID:???.net
コマンドラインで動すとか、error_logを見るとかすれば原因わかるだろうに。
sub内のdo something hereのとこは適宜にシャットダウン時やクリーンアップ時に行う
処理を書いておくところだよ。詳しくはメソッドの解説を参照。

#!/usr/bin/speedy -- -r1 -t1
$sp->add_shutdown_handler(sub { `touch shutdown` });
$sp->register_cleanup(sub { print "b" });

とかにすれば一応動きがわかるんじゃないかな
./speedy.pl
ls
の繰り返しで。

838 :nobodyさん:2009/12/13(日) 23:00:48 ID:???.net
これじゃだめか
#!/usr/bin/speedy -- -r3 -t100
かね

839 :nobodyさん:2009/12/13(日) 23:30:38 ID:???.net
>>837
[root@localhost hogehoge]# ./speedy.pl
Can't call method "add_shutdown_handler" on an undefined value at ./speedy.pl line 2.
そもそもadd_shutdown_handlerが無い的な感じなのかしら。
>>838
同じように試してみたけども、だめでした。

840 :nobodyさん:2009/12/13(日) 23:48:54 ID:???.net
>>839はuseし忘れてただけでした。
すみません。

[root@localhost hogehoge]# ./speedy.pl
syntax error at ./speedy.pl line 8, near "do something here "
syntax error at ./speedy.pl line 10, near "do something here "
Execution of ./speedy.pl aborted due to compilation errors.
speedy_backend[24310]: perl_parse error
speedy[24308]: Cannot spawn backend process

http://perldoc.jp/docs/modules/CGI-SpeedyCGI-2.21/SpeedyCGI.pod
 # shutdownハンドラの登録
 $sp->add_shutdown_handler(sub { do something here });
 # クリーンアップ・ハンドラの登録
 $sp->register_cleanup(sub { do something here });
ここが原因みたいです。

841 :nobodyさん:2009/12/13(日) 23:57:28 ID:???.net
ごめんなさい、載せ忘れ。
ほんと連レスすみません。

>>837の実行結果
[root@localhost hogehoge]# ./sp.pl
b

842 :nobodyさん:2009/12/14(月) 11:36:32 ID:???.net
print "b" のとこは "cleanup" にでもしといたほうがよかったか
スクリプトが終わる際に登録した処理が行われるだけだけど。

Speedyのバックエンドが終わる際には、cleanupも終わって標準入出力閉じた後に
shutdownが行われる。そこはprintしても表示ができないのでわざと`touch shutdown` して
ファイルを生成している。いつそのファイルが作られるかを見てほしい。
たぶんタイムアウト(t)が迫った場合や再利用回数(r)が迫った場合に作成されると思う。
-r6 くらいにするとたぶん5回目の実行の際に作られるかな。

多分これを使えばSpeedyで動いてた間に蓄積したデータとか吐かせたりとか
有用な使い方できるんだろうけど、絶対動くような信用性があるかはわからんので
スクリプト内のグローバル変数で同じようなことを実現したほうが確実かも。

-r -t 自体結構信用ならないので、2chではshutdown_next_timeも活用してた気がする。

843 :nobodyさん:2009/12/15(火) 21:02:36 ID:???.net
>>842
返信遅れてすみません。

rootで-r6 -t10でlsしながら実行したところタイムアウトが迫ったときに所有権がrootのshutdownファイルが
スクリプトと同じディレクトリに生成されるみたいです。


844 :nobodyさん:2010/03/25(木) 04:47:09 ID:???.net
mod_perlとSpeedyCGIとFastCGIの違いを教えて下さい。

845 :nobodyさん:2010/03/25(木) 08:47:59 ID:???.net
どれもググれない人には使えないので一緒

846 :nobodyさん:2011/12/16(金) 19:35:41.49 ID:???.net
mod_perlで、Java Servlet2.4以前のHttpServletRequest#getRequestURL()
と同じような結果を取得する方法を探しているのですが、何かよいモジュールは
ありませんか?

847 :nobodyさん:2012/02/28(火) 19:51:56.53 ID:???.net
Windows2000
Apache 2.2.22
mod_perl/2.0.4
activeperl 5.12.4

mod_perl でエラー発生したとき、CGI::Carp qw(fatalsToBrowser) が有効にならないのですが、
ブラウザでエラーとかを把握する方法ってあるのでしょうか?

848 :nobodyさん:2012/04/14(土) 19:26:27.93 ID:d0KbMnsL.net
どうして2chだけFastCGIが不人気なんですか?

849 :nobodyさん:2012/04/17(火) 19:01:39.19 ID:???.net
簡単にWindows環境で動くやつが
ないよね?


850 :電脳プリオン 忍法帖【Lv=40,xxxPT】(1+0:8) 【15.1m】 :2014/01/21(火) 00:52:32.25 ID:???.net ?PLT(12081)
このスレは激遅

851 :nobodyさん:2014/01/21(火) 18:35:02.53 ID:yT6VQ/mu.net
CGI以外のインタフェースいちいち覚えるの面倒だから誰も使わないんだよ
中の人がmod_cgidso作ったことからもわかるでしょ?

852 :nobodyさん:2015/08/06(木) 20:11:30.67 ID:???.net
mod_perlで2ch型掲示版

853 :nobodyさん:2017/12/30(土) 13:54:54.78 ID:YhlYw6jg.net
誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。

グーグル検索⇒『半藤のブブイウイウレレ』

2FT5DXTAC3

854 :nobodyさん:2024/02/18(日) 09:14:26.67 ID:p0sZuJhWZ
防衛大臣の木原稔やら大多数の議員が統━教会の集会に出席して褒め称えて會費まで払って祝電送って会長を官邸にまで招待してた
統一教会と−心同体の自民党が白々しく口先だけで関係を断つだのほざいて解散云々税金免除の対象から外す話しか出てこないあたり
分かりやすいよな、私腹を肥やしたいた゛けの世界最悪の殺人腐敗利権集団公明党も石川博崇,高木陽介、佐藤茂樹が統―教會と繋がってたし
政教分離など宗教全体の問題になることを必死に姑息に阻止して統一教會を擁護してるあたりも分かりやすいた゛ろ>創価学会員
都心まで数珠つなぎて゛クソ航空機に騒音に温室効果ガスにコロナにとまき散らさせて旅行支援もとい人殺し支援た゛のと税金で気侯変動させて
地球破壊して曰本どころか世界中で土砂崩れに洪水、暴風、熱中症、森林火災にと災害連発させて世界中の住民の生命と財産を
賄賂癒着組織に強奪させてる世界最悪のテロ組織自民公明に乗っ取られた腐敗テロ国家の暴走を止めるには民主主義の教祖
山上大先生みたいなのが大勢出てこないとどうしようもないな
〔rеf.〕 Ttps://www.Call4.jp/info.php?tуpe=items&id=I0000062
ttps://haneda-рroject.jimdofree.com/ , тΤps://flight-rouТe.com/
ttРs://n-souonhigaisosyoudan.amebaownd.com/

275 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★