「サーバタイムアウト」の考慮

user-pic
0
世田谷の天気: 夕方から雨?

今日も朝からポッカぽっか~~あ。ああ幸せなり。

Webプログラムでの基本「サーバサイドで重たい処理を実行中にブラウザのタイムアウトを回避する」っていうので若干はまってしまっていました。

考え方はあっているのに旨く動かない・・・・いわゆる bug中やつで。やっとさ解決しました。どーやら、ちょっとしたことが原因だったらしい。

ちなみに下記のソースが、ブラウザのタイムアウトを回避するちゅうやつです。
※時間があったら、またまとめて本サイトの方の記事にしときます

#!/usr/bin/perl

sub handler {
    print ".";

    $SIG{ALRM} = \&handler;  # タイムアウトを回避するために再設定
    alarm 10;
}


$| = 1;
print "Content-type: text/plain\n\n";
my $pid = fork;
die unless defined $pid; # fork 失敗で異常終了

if($pid) { # 親プロセス
    $SIG{ALRM} = \&handler;

    print "<!--";
    alarm 10;
    wait;     # 子プロセスの終了待ち
    alarm 0;
    print "-->";

    html結果の表示

    exit;
}
# 子プロセス
#close STDOUT;

#以下、永遠長い処理だけど・・・・
#永久ループはだめよ(笑)


ここが参考になりまするぅ
 → サーバによるタイムアウトを回避&重い処理の保護
 → シグナルの種類はOSによって違いますが、kill -l で確認できます
 → クッキー&セッションを使用する

トラックバック(0)

トラックバックURL: http://www.sea-bird.org/mt42/mt-tb.cgi/114

コメントする

このブログ記事について

このページは、murachiが2004年2月22日 23:54に書いたブログ記事です。

ひとつ前のブログ記事は「「スキマー」って?」です。

次のブログ記事は「「カノープス/MpegCraft」を買ってみた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。