トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

PHP で排他制御をする

セマフォを使う

 <?php
   
   echo "start\n";
   $res = lock();
   echo "\n";
   sleep(5);
   unlock($res);
   echo "\n";
   echo "end";
   
   function lock() {
    //第一引数:ファイル名 なんでも良い
    //第二引数:任意の一文字
     // $res = sem_get(ftok(__FILE__, "t"));
     $res = sem_get(ftok(".", "t"));
     sem_acquire($res);
     return $res;
   }
   
   function unlock($res) {
     sem_release($res);
   }
   
 ?>

ロックファイルを使う

 <?php
   
   echo "start\n";
   lock();
   sleep(5);
   echo "end";
   unlock();
   
   
   
   function lock() {
     $lockfile = "lock";
     while(file_exists($lockfile)) {
       usleep(500000);
     }
     touch($lockfile);
   }
   
   function unlock() {
     $lockfile = "lock";
     unlink($lockfile);
   }
   
 ?>

[カテゴリ: プログラミング言語 > PHP]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2017年04月08日 10時10分16秒