| |
複数の人が同時に同一のファイルに対して読み書きを行なうと正常に書き込まれない場合があります。そこで、ファイルロックにより1人がファイルにアクセスしている間は他の人がそのファイルにアクセスできないようにします。ファイルロックの方法として、ファイルロック関数flock、シンボリックリンク関数symlink、ディレクトリ作成関数mkdirを使用する方法があります。flock、symlinkはサーバによっては使用できない場合があるので、ここではmkdirによる方法を記述します。 この方法はディレクトリの有無がファイルアクセスの有無を表します。mkdirがディレクトリの存在チェックと生成を同時に行えることを利用しています。処理の流れを下記に示します。 1.ファイルアクセスの前にmkdirを実行します。 2.mkdirはディレクトリが存在しなければディレクトリを生成し「真」を返します。 既にディレクトリが存在すると「偽」を返します。 3.「真」の場合はファイルアクセスを行います。 4.「偽」の場合はウェイト後リトライします。 指定回数リトライしても「偽」の場合はタイムアウトで終了します。 5.ファイルアクセスが終了したらディレクトリを削除します。 sleep 指定した秒数スリープする。 例 sleep(2); | |
■プログラム (sample26.cgi)
| |
■実行結果
|
HOME | Copyright (C) CGI-design All Rights Reserved. |