>>335 Socket を使うときはどんなクラス(←Perlでもこの言い方でいいの?)を使うんですか?
Net::Socket とかなんとか便利なものがあるんですか?
Net::Http とか? (←勝手に想像しています)
357 :
ひろゆき@どうやら管理人 ★:04/12/30 00:22:23 ID:???
beに登録してるユーザーの場合は、beのDBに見に行くようにしてみようかと。
358 :
ひろゆき@どうやら管理人 ★:04/12/30 00:23:03 ID:???
>>356 use socket;
だけで、あとはこそこそと。
投稿毎にやるですか、、、
>>325 単純な暴走が起こります。
そのプロセス(perl subbbs.cgi)が、プロセスを100%使ってしまう。
で、120秒分CPUを使うと、むなしく終了していく。
スレ立ての時に直接subbbs.cgiをコールする2ちゃんねるビューワもあるような
気がちょっとしたけど、どうでしたっけ。
>>326 そのコードでたぶん問題ないと思います。
私も、
>>329 の変化に注目したい。
>>357 beのDBが落ちていた場合に、どうなるのかしら。
待っちゃう?
全投稿に対してやるとすると、相当気合入れないと大変すよ。サーバ側。
FreeBSD素の設定(各種カーネルチューンしてない状態)では、
ほとんどむりぽなような。
確か今160万投稿とか170万投稿とかあるので、
そのつもりでサーバ側をまじめに強化しないと、かなりきびしいです。
>>360 subbbs.cgi をバックアップして
今は使われていませんとしてみよう。
そうか、BBSとBBYのDBに、2ちゃんねるのサーバ全部を登録するようにしなきゃ。
やってきます。
うっ 上書きしつまった、
subbbs.cgi は何処か遠くへ・・・
でもどっかのサーバに残っているだろう、きっと。
Have a nice surf !!
Top
368 :
未承諾酩酊※ ◆TWARamEjuA :04/12/30 00:49:38 ID:+U2vszG5
あわわわ
とりあえず、ミャンマー当たりで連投スレ建てしまくって不具合無いか調べた
ほうがいい鴨
370 :
未承諾酩酊※ ◆TWARamEjuA :04/12/30 00:52:09 ID:+U2vszG5
bubble2サーバから回収してきた < subbbs.cgi
subbbs-save.cgi で qb6に入れた。
>>370 あっ それ知ってる、
boo80 はそれでやったような、
$ua = LWP::UserAgent->new() でUA作って
HTTP::Headers->new()
HTTP::Request->new() なんてのを作って
UA にheadrer と Request くべて
$res = $ua->request() すねーるんですよね?
$ua->timeout(15) とか設定して
タイムアウト時は$response->code() あたりを見ればいいのかしら?
しかし本筋は
●の時にやったように期限付きのセッションID方式と思われ < be のDB look up
DBが何でできているかわかりませんが、
前にDBIがどうのとかどっかで言っていたような気がするので、
MySQLか何かのサーバと、プロセス間通信しようとしているのかも。
376 :
ひろゆき@どうやら管理人 ★:04/12/30 02:23:43 ID:???
>>359 beにログインしてるユーザーの場合だけです。
377 :
未承諾酩酊※ ◆TWARamEjuA :04/12/30 02:32:45 ID:+U2vszG5
>>373 そんな感じですー
→タイムアウト時は$response->code() あたりを見ればいいのかしら?
例文の通り、
$response->status_line;
とすると詳しい情報が得られるようです。('time out' の文字列が含まれています。)
378 :
ひろゆき@どうやら管理人 ★:04/12/30 02:41:02 ID:???
$ip = inet_aton($be_host) || print "host($be_host) not found.\n";
$sockaddr = pack_sockaddr_in($port, $ip);
socket(SOCKET, PF_INET, SOCK_STREAM, 0) || print "socket error\n";
connect(SOCKET, $sockaddr) || die "connect $be_host error\n";
autoflush SOCKET (1);
print SOCKET "GET $url HTTP/1.1\n";
print SOCKET "Host: $host\n";
print SOCKET "Connection: close\n\n";
379 :
未承諾酩酊※ ◆TWARamEjuA :04/12/30 02:41:05 ID:+U2vszG5
>>377 ちなみに、
$response->status_line のとき。
500 Can't connect to count.2ch.net:80 (connect: timeout) at ./test.pl line 12.
$response->code() のとき。
500 at ./te.pl line 12.
となるですー
380 :
ひろゆき@どうやら管理人 ★:04/12/30 02:42:08 ID:???
モジュールのほうが重そうな気がしたので、
書いたほうが早いと思ったんですが、どうなんでしょう?
381 :
名無しさん:04/12/30 02:43:20 ID:PtWy/RYB
外部からbeのデータが覗かれちゃう危険は無いのかしらん、
モジュール(って言うんですか?)と同じに書けば同スピード
遅くなるように書けば遅いし
より早いコードを書けば早いかと、
ちなみにコンパイルされるんで
ロードの負荷やコンパイルの負荷は限りなく0です。
383 :
ひろゆき@どうやら管理人 ★:04/12/30 02:45:12 ID:???
>>381 DBIだとselect文とかいじれちゃうので、
http経由のほうがいいかなぁと思ったのです。
384 :
ひろゆき@どうやら管理人 ★:04/12/30 02:46:14 ID:???
>>378みたいに7行で終わるので、
モジュールよりは、早いんじゃないかなぁ、、と。
サーバの場所に実は一番左右されたり < コードの優劣より
386 :
未承諾酩酊※ ◆TWARamEjuA :04/12/30 02:47:25 ID:+U2vszG5
>>378 timeout処理がないので、count.2ch.net みたいになると永遠に戻らなくなるですよー(汗)
でもってalarm()を使うと、SpeedyCGIではへんてこりんになるんだっけ?
>>380 リクエストされる数にもよるけれども、10分に1回くらいのリクエストならLWP::UserAgent使う方が楽かもですー
(このあたりはTimeoutをどれくらい取るかに左右されるかと思いますー)
TCPセッション張るですか。
connect() で詰まったら(サーバが落ちてたとかで)、どうするんだろう。
>>386 alerm() はSpeedyCGIでは使えませんです。
モジュール使って、タイムアウト指定しとかないとひどいことになるような。
LWP::UserAgent とかを使って、タイムアウトを入れたほうがよさげ。
正常にGETが終了する場合
>>378 でも
>>373 でも
PIE 内であれば BD の処理を除けば 10ms 以下で終ると予想
PIE 外(たとえば日本) 200ms かかるかも?
異常な場合(timeout.busy等)
>>378 timeout 処理ないと bbs.cgi が待ち続け他の人がかけなくなる (-M32)
>>373 timeout 処理をたんたんと、
ってとこかな?
390 :
未承諾酩酊※ ◆TWARamEjuA :04/12/30 02:53:26 ID:+U2vszG5
>>388 LWPなどはIO:SelectでTimeout処理しているのでSpeedyCGIでもへんてこりんにならないようなのですー
あと、、
>>378 の場合はわからないけど
>>373 でやると簡単に HTTPS が使えたり、Proxy経由で参照できたりと
のちのち簡単です
>>389 概ね、そんなかんじかと。
PIE <=. Sakuraは120msぐらいかかるみたいなので、250msぐらいはかかるですね。
%ping be.2ch.net
PING be.2ch.net (202.222.31.214): 56 data bytes
64 bytes from 202.222.31.214: icmp_seq=0 ttl=47 time=119.828 ms
64 bytes from 202.222.31.214: icmp_seq=1 ttl=47 time=123.794 ms
64 bytes from 202.222.31.214: icmp_seq=2 ttl=47 time=120.057 ms
64 bytes from 202.222.31.214: icmp_seq=3 ttl=47 time=122.132 ms
64 bytes from 202.222.31.214: icmp_seq=4 ttl=47 time=120.747 ms
^C
--- be.2ch.net ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 119.828/121.312/123.794/1.478 ms
393 :
未承諾酩酊※ ◆TWARamEjuA :04/12/30 02:56:05 ID:+U2vszG5
>>390 …ですね。
ふろ入ってくるです。東京、さむさむ。
こっちは最高気温が-5℃とかだったり
雪祭りシーズン並
>>392 あ、RTTだから単純に倍するのはへんだ、、、。
connect()失敗した後にファイルディスクリプタ解放してないのか・・・
まぁひとごとだし、いいけど。
>>397 うむ。
SpeedyCGIだと、こういうのも響いてくる予感。
つまり、どなたかのいう「静脈系」をちゃんとできるひとじゃないと、
いじった場合、よりいっそういけないことになると。
ふろー。
399 :
ひろゆき@どうやら管理人 ★:04/12/30 03:02:25 ID:???
素直にLWPつかいますかー。
yamete
サンプルもって来る出巣
use LWP::UserAgent;
use
HTTP::Request; use
HTTP::Status; my $ua = LWP::UserAgent->new();
$ua->agent ("Iyan Bakan ver 1.00");
$ua->from ("security\@2ch.net");
$ua->proxy("http", "
http://$proxy/") ;#proxyさすなら
$ua->timeout(15);
$header =
HTTP::Headers->new(
'Referer' => "
http://www.2ch.net/",
);
my $parameter= "abc=123&def=456";
my $request =
HTTP::Request->new("POST", "
http://be.2ch.net/nantara.cgi", $header, $parameter);
my $response = $ua->request($request) ;#ここで GET 処理
#ここでtimeout処理
my $response_code = $response->code();#302とか404とか500
my $response_body = $response->content();#GETの結果はここに入っている
たぶん 7行より短くなるはず、