|
カテゴリ: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) | コメントを書く
[PHP] カテゴリの最新記事
|