#!/usr/bin/perl # Filename: gcount.pl.cgi [Rev:1.00] # Programming by GONTA # UPDATE BY KFC@HOU 1999.10.26 # UPDATE BY KFC@PIP 2000.01.28 # UPDATE BY KFC@TAM 2001.05.15 $FileName="count/count"; # カウントファイル $FileName="../count/count"; # カウントファイル $lock_file1 = "count/lockfile"; # ロックファイル $lock_file1 = "../count/lockfile"; # ロックファイル # 上2つのファイル及びディレクトリには書き込み権を付加すること $num_retry = 5; # 再試行最大回数 $retry_time = 1; # Busy時待ち時間( sec ) $expire = 300; # 最大排他制御時間( sec ) $gifdir = "cgi-bin/"; # 数値GIFファイルのあるディレクトリ added $gifdir = "../cgi-bin/"; # 数値GIFファイルのあるディレクトリ added @CmdLine=split(//,$ENV{'QUERY_STRING'}); if (@CmdLine[1] eq "+"){ #$lock_file1 ディレクトリの正当性をチェックする if(-d $lock_file1 && (time()-(stat($lock_file1))[9])>$expire){ rmdir($lock_file1); } #$lock_file1 ディレクトリを作成する for($retry=$num_retry; $retry>0 && mkdir("$lock_file1",0755)!=1; $retry--){ sleep($retry_time); # ある場合は時間待ち } if($retry>0){ # 成功したか open(fp,"$FileName"); $count=; close(fp); $count++; open(fp,">$FileName"); print fp $count; close(fp); rmdir("$lock_file1"); # 排他制御を解除する } } open(fp,"$FileName"); $count=; close(fp); $figure=length($count); $GIF_Name=$gifdir; if ($CmdLine[0] gt $figure){ $GIF_Name.="0.gif"; } else{ $GIF_Name.=substr($count,$CmdLine[0]*-1,1); $GIF_Name.=".gif"; } print "Content-type: image/gif\n\n"; open(fp,"$GIF_Name"); while(){ print; } close(fp);