ファイルロックは、同時アクセスが頻繁におこる可能性が あるサイトに有効です。 同時アクセスが頻繁に起こると、データファイルの中身が 消去される可能性があります。 これを防ぐために、ファイルロックを使用します。 ロック方法には色々ありますが、簡単な方法として以下の 方法があります。 #----------------------------------------------- ロックファイルを指定する $lockfile = "./lock.txt"; アクセスが発生した場合にロックファイルが あるかどうか確認して、ロックファイルがある場合は、 5回リトライする。 $ct = 0; while (-f $lockfile) { $ct++; if( $ct >= 5 ){ &error(14); } sleep(1); } ファイルが無い場合はロックファイルを作る open(LOCK,">$lockfile"); close(LOCK); } ・・・ここに一連の処理が来ます。 そして処理が終了したら、ロックファイルを 消去します。 unlink $lockfile; #----------------------------------------------- 以上が一連の流れです。 一般的にファイルの中が消去される可能性が一番高いのは、 ファイルの中の読み込み時やファイルへの書きこみ時です。 従ってここによくファイルロックする記述が使用されます。 以下のように使用します。 #----------------------------------------------- $file = "./data.txt"; $lockfile = "./lock.txt"; $ct = 0; while (-f $lockfile) { $ct++; if( $ct >= 5 ){ &error(14); } sleep(1); } open(LOCK,">$lockfile"); close(LOCK); } if(!open(OUT,">$file")){ &error } print "ファイルへの書きこみ\n"; close(OUT); unlink $lockfile; #----------------------------------------------- 上記は、ファイルに書きこむ場合に同時書きこみを 防ぐ為に、書きこむ前にロックをかけて、書き込んだ 後にロックを解除しています。