戻る

(1) flockを使ってロックする
#---------------------------------------------------------------------
# 各種データ変数の初期化
#---------------------------------------------------------------------
sub init {

    $| = 1;                             # 書き込みバッファリングをしない
    $cgi_name = "$script".".cgi";       # CGIファイル名
    $log_file = "$path"."$log_name";    # ログファイル名

    #----------------------------------------------------------
    #  海外サーバ等で時差が生じる場合は修正
    #    海外時間に+9時間する場合 = localtime(time + 9*60*60);
    #    海外時間に−9時間する場合 = localtime(time - 9*60*60);
    #----------------------------------------------------------
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

    #----------------------------------------------------------
    #  時分秒を2桁に統一する処理
    #----------------------------------------------------------
    if ($sec < 10)  { $sec  =  "0$sec";  }
    if ($min < 10)  { $min  =  "0$min";  }
    if ($hour < 10) { $hour = "0$hour"; }

    #----------------------------------------------------------
    #  上記の$monには0から11までの数字が入るので修正処理
    #----------------------------------------------------------
    $month = ($mon + 1);

    #----------------------------------------------------------
    #  曜日変換処理
    #  $wdayには0から6までの数字が入り曜日に対応している
    #----------------------------------------------------------
    $y0="日"; $y1="月"; $y2="火"; $y3="水"; $y4="木"; $y5="金"; $y6="土";
    $youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6) [$wday];

    #----------------------------------------------------------
    #  時刻フォーマット
    #----------------------------------------------------------
    $date_now = "$month月$mday日($youbi)$hour時$min分$sec秒";

}


#-----------------------------------------------------------------
# ログファイルの読み込み(@linesに格納)
#-----------------------------------------------------------------
sub read_log {

    if (!open(DB,"$log_file")) {
        &error("ログファイルが読み出しオープンできません。");
    }
    eval {flock( DB, 1 );};     # 読み込みロック開始
    @lines = <DB>;
    eval {flock( DB, 8 );};     # ロック解除
    close(DB);
}


#-----------------------------------------------------------------
# ログファイルの書き出し
#-----------------------------------------------------------------
sub write_log {

    if (!open(DB,">$log_file")) {
        &error("ログファイルが書き出しオープンできません。");
    }
    eval {flock( DB, 2 );};     # 書き込みロック開始
    print DB @new;
    eval {flock( DB, 8 );};     # ロック解除
    close(DB);
}

戻る
CGI工房