Example #1
0
 static function lockr($fp)
 {
     set_file_buffer($fp, 0);
     if (!flock($fp, LOCK_SH)) {
         HakoError::lockFail();
     }
     rewind($fp);
 }
Example #2
0
 static function lock()
 {
     global $init;
     $fp = fopen("{$init->dirName}/lock.dat", "w");
     for ($count = 0; $count < LOCK_RETRY_COUNT; $count++) {
         if (flock($fp, LOCK_EX)) {
             // ロック成功
             return $fp;
         }
         // 一定時間sleepし、ロックが解除されるのを待つ
         // 乱数時間sleepすることで、ロックが何度も衝突しないようにする
         usleep((LOCK_RETRY_INTERVAL - mt_rand(0, 300)) * 1000);
     }
     // ロック失敗
     fclose($fp);
     HakoError::lockFail();
     return FALSE;
 }