isLock, lock, unlock 개선
This commit is contained in:
+15
-22
@@ -2501,31 +2501,24 @@ function CheckOverhead($connect) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function isLock($connect) {
|
function isLock() {
|
||||||
$query = "select plock from plock where no=1";
|
return newDB()->queryFirstColumn("select plock from plock where no=1") != 0;
|
||||||
$result = MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
$plock = MYDB_fetch_array($result);
|
|
||||||
|
|
||||||
if($plock['plock'] == 0) { return 0; } // 열려있음
|
|
||||||
else { return 1; } // 사용중
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function lock($connect) {
|
function lock() {
|
||||||
|
//NOTE: 게임 로직과 관련한 모든 insert, update 함수들은 lock을 거칠것을 권장함.
|
||||||
|
$db = newDB();
|
||||||
//테이블 락
|
//테이블 락
|
||||||
$query = "lock tables plock write";
|
$db->query("lock tables plock write");
|
||||||
@MYDB_query($query, $connect);
|
|
||||||
// 잠금
|
// 잠금
|
||||||
$query = "update plock set plock=1 where no=1";
|
$db->query("update plock set plock=1 where no=1");
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
//테이블 언락
|
//테이블 언락
|
||||||
$query = "unlock tables";
|
$db->query("unlock tables");
|
||||||
@MYDB_query($query, $connect);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function unlock($connect) {
|
function unlock() {
|
||||||
// 풀림
|
// 풀림
|
||||||
$query = "update plock set plock=0 where no=1";
|
newDB()->query("update plock set plock=0 where no=1");
|
||||||
MYDB_query($query, $connect) or Error(__LINE__.MYDB_error($connect),"");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function timeover($connect) {
|
function timeover($connect) {
|
||||||
@@ -2632,7 +2625,7 @@ function checkTurn($connect) {
|
|||||||
// 잦은 갱신 금지 현재 10초당 1회
|
// 잦은 갱신 금지 현재 10초당 1회
|
||||||
if(!timeover($connect)) { return; }
|
if(!timeover($connect)) { return; }
|
||||||
// 현재 처리중이면 접근 불가
|
// 현재 처리중이면 접근 불가
|
||||||
if(isLock($connect)) { return; }
|
if(isLock()) { return; }
|
||||||
|
|
||||||
$locklog[0] = "- checkTurn() : ".date('Y-m-d H:i:s')." : ".$_SESSION['p_id'];
|
$locklog[0] = "- checkTurn() : ".date('Y-m-d H:i:s')." : ".$_SESSION['p_id'];
|
||||||
pushLockLog($connect, $locklog);
|
pushLockLog($connect, $locklog);
|
||||||
@@ -2645,9 +2638,9 @@ function checkTurn($connect) {
|
|||||||
//if(!@sem_acquire($sema)) { echo "치명적 에러! 유기체에게 문의하세요!"; exit(1); }
|
//if(!@sem_acquire($sema)) { echo "치명적 에러! 유기체에게 문의하세요!"; exit(1); }
|
||||||
|
|
||||||
// 현재 처리중이면 접근 불가
|
// 현재 처리중이면 접근 불가
|
||||||
if(isLock($connect)) { return; }
|
if(isLock()) { return; }
|
||||||
// 락 걸고 처리
|
// 락 걸고 처리
|
||||||
lock($connect);
|
lock();
|
||||||
|
|
||||||
// 파일락 해제
|
// 파일락 해제
|
||||||
if(!flock($fp, LOCK_UN)) { return; }
|
if(!flock($fp, LOCK_UN)) { return; }
|
||||||
@@ -2725,7 +2718,7 @@ function checkTurn($connect) {
|
|||||||
|
|
||||||
// 잡금 해제
|
// 잡금 해제
|
||||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', unlock');
|
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', unlock');
|
||||||
unlock($connect);
|
unlock();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2847,7 +2840,7 @@ function checkTurn($connect) {
|
|||||||
processAuction($connect);
|
processAuction($connect);
|
||||||
// 잡금 해제
|
// 잡금 해제
|
||||||
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', unlock');
|
//if(STEP_LOG) pushStepLog(date('Y-m-d H:i:s').', unlock');
|
||||||
unlock($connect);
|
unlock();
|
||||||
|
|
||||||
$locklog[0] = "- checkTurn() 출 : ".date('Y-m-d H:i:s')." : ".$_SESSION['p_id'];
|
$locklog[0] = "- checkTurn() 출 : ".date('Y-m-d H:i:s')." : ".$_SESSION['p_id'];
|
||||||
pushLockLog($connect, $locklog);
|
pushLockLog($connect, $locklog);
|
||||||
|
|||||||
Reference in New Issue
Block a user