忍法帖 開発スレッド Part23

このエントリーをはてなブックマークに追加
193ピロリ(WiMAX)
my $NINJA_Takusan_DB = 7 ; # 沢山いっきに忍法帖IDを取得するIPを格納するDB
my $Expire7 = 180 ; # 同一IPで使われる忍者IDデータの有効期限
my $Check7 = 2 ; # 同一IPで使われる忍者IDのcheck数

##############################################################################
sub check_takusan_ninjaID
{
my ($ipaddr, $ninjaid) = @_;
my $ret = 0 ;

my $r = Redis->new(server => '127.0.0.1:6379', encoding => undef);
$r->auth("foobared");
my $ppp = $r->ping;
# if($ppp) {print "ping = $ppp<br>\n";} # redisサーバの生存確認
if(!$ppp) {return -1;}

$r->select($NINJA_Takusan_DB);
if(!$r->exists($ipaddr))
{ # ご新規さん。IPアドレスをキーにして忍者IDを記録
#my $aa = sprintf qq|***new[%s]|,$ipaddr;&LogLog("$aa\n");
$r->sadd($ipaddr, $ninjaid);
$r->expire($ipaddr, $Expire7);
}
else
{
if($r->sismember($ipaddr, $ninjaid) == 1)
{ # 忍者IDが登録されている?
;
$r->expire($ipaddr, $Expire7); # 有効期限を更新
my $ttl = $r->ttl($ipaddr);
}
else
{
$r->sadd($ipaddr, $ninjaid); # 忍者IDを登録
$r->expire($ipaddr, $Expire7); # 有効期限を更新
my $ttl = $r->ttl($ipaddr);
}
my $num_of_ID = $r->scard($ipaddr); # IPアドレスに紐付けされている忍者IDの数
# my $aa = sprintf qq|***[%s]%s|,$num_of_ID,$ipaddr;&LogLog("$aa\n");
# if ($num_of_ID > $Check7)
# { # 以上なら煮るなり焼くなり破門するなり
#my $aa = sprintf qq|***[%s]%s|,$num_of_ID,$ipaddr;&LogLog("$aa\n");
# }
$ret = $num_of_ID ;
}

$r->quit;

return $ret;
}