トップ 一覧 置換 検索 ヘルプ 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);
    }
    
  ?>

{{category2 プログラミング言語,PHP}}