805737 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

まんじうこわい@楽

まんじうこわい@楽

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Keyword Search

▼キーワード検索

Calendar

Profile

hknopage

hknopage

Free Space

Category

Freepage List

2008.11.20
XML
カテゴリ:PHP
 ファイルの読み書きを排他的に行いたく、色々と調べました。
 PHPにもデフォルトで関数が存在するのですが、環境によっては正しく動作しないそうです。

 そこで、こちらのサイトを参考にさせていただき、クラスに排他制御できるようにしました。
-----------------------------------------
/**
* 排他制御
* ロックという名前のフォルダの有無によって排他制御を行う
*/
class ExclusiveControl{
// ロック状況
private $_lock = false;

/**
* ロック取得
*/
public function lock() {
// 既にプログラムがロックしている場合、trueを返す
if($this->_lock)return true;
// lockというフォルダの有無で排他制御をおこなう
if($this->_lock = @mkdir('lock')) {
// 作成できた場合=ロック取得成功
return true;
} else {
// 作成できなかった場合=他プロセスがロックしている
return false;
}
}

/**
* ロック解放
*/
public function unlock() {
// このプログラムがロックしている場合、解放する
if($this->_lock){
@rmdir('lock');
$this->_lock = false;
}
}

}
-----------------------------------------
 こんな感じ。
 うまくクラスに組み込めばタブンうまくいく・・・ハズ。
(そのまま使ってうまくいかない~とか言われても責任負いませんのであしからず)
 開放し忘れないようにデストラクタでアンロックするようにした方がいいのかな。

 プログラムって楽しい~





お気に入りの記事を「いいね!」で応援しよう

Last updated  2008.11.21 00:52:54
コメント(0) | コメントを書く



© Rakuten Group, Inc.
X