예약 오픈 시 데이터를 바로 날리진 않도록 설정
This commit is contained in:
+57
-5
@@ -6,15 +6,67 @@ include "func.php";
|
|||||||
|
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
|
||||||
$reserved = $db->queryFirstRow(
|
$reserved = $db->queryFirstRow('SELECT `date`, options FROM reserved_open ORDER BY `date` ASC LIMIT 1');
|
||||||
'SELECT * FROM reserved_open WHERE `date` <= %s LIMIT 1',
|
|
||||||
(new \DateTime())->format('Y-m-d H:i:s')
|
|
||||||
);
|
|
||||||
|
|
||||||
if(!$reserved){
|
if(!$reserved){
|
||||||
Json::die([
|
Json::die([
|
||||||
'result'=>true,
|
'result'=>true,
|
||||||
'affected'=>0
|
'affected'=>0,
|
||||||
|
'status'=>'no_reserved'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$reservedDate = new \DateTime($reserved['date']);
|
||||||
|
$now = new \DateTime();
|
||||||
|
|
||||||
|
|
||||||
|
$status = 'not_yet';
|
||||||
|
|
||||||
|
if ($db->queryFirstField("SHOW TABLES LIKE 'game'")) {
|
||||||
|
list($isUnited, $lastTurn) = $db->queryFirstList('SELECT isUnited, turntime FROM game LIMIT 1');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$isUnited = 2;
|
||||||
|
$lastTurn = '2000-01-01';
|
||||||
|
}
|
||||||
|
|
||||||
|
if($lastTurn !== null){
|
||||||
|
$lastTurn = new \DateTime($lastTurn);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($lastTurn === null){
|
||||||
|
//이미 리셋된 상태임
|
||||||
|
}
|
||||||
|
else if(file_exists(__dir__.'/.htaccess')){
|
||||||
|
//일단 서버는 닫혀 있음
|
||||||
|
}
|
||||||
|
else if(
|
||||||
|
$isUnited == 2 &&
|
||||||
|
$now->getTimestamp() - $lastTurn->getTimestamp() > $reservedDate->getTimestamp() - $now->getTimestamp()
|
||||||
|
){
|
||||||
|
//정지 상태 & 중간 넘음
|
||||||
|
AppConf::getList()[DB::prefix()]->closeServer();
|
||||||
|
$status = 'closed';
|
||||||
|
}
|
||||||
|
else if(
|
||||||
|
$isUnited > 0 &&
|
||||||
|
$now->getTimestamp() - $lastTurn->getTimestamp() > ($reservedDate->getTimestamp() - $now->getTimestamp()) * 2
|
||||||
|
){
|
||||||
|
//천통 & 비정지 상태 & 2/3 넘음
|
||||||
|
AppConf::getList()[DB::prefix()]->closeServer();
|
||||||
|
$status = 'closed';
|
||||||
|
}
|
||||||
|
else if($reservedDate->getTimestamp() - $now->getTimestamp() <= 60*10){
|
||||||
|
//어쨌든 간에 10분 남았다면.
|
||||||
|
AppConf::getList()[DB::prefix()]->closeServer();
|
||||||
|
$status = 'closed';
|
||||||
|
}
|
||||||
|
|
||||||
|
if($now < $reservedDate){
|
||||||
|
Json::die([
|
||||||
|
'result'=>true,
|
||||||
|
'affected'=>0,
|
||||||
|
'status'=>$status
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
-3
@@ -52,9 +52,18 @@ if($reserve_open){
|
|||||||
$reserve_open = new \DateTime($reserve_open);
|
$reserve_open = new \DateTime($reserve_open);
|
||||||
$db = DB::db();
|
$db = DB::db();
|
||||||
|
|
||||||
$clearResult = ResetHelper::clearDB();
|
if (!$db->queryFirstField("SHOW TABLES LIKE 'game'")) {
|
||||||
if(!$clearResult['result']){
|
$clearResult = ResetHelper::clearDB();
|
||||||
Json::die($clearResult);
|
if(!$clearResult['result']){
|
||||||
|
Json::die($clearResult);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$db->queryFirstField("SHOW TABLES LIKE 'reserved_open'")) {
|
||||||
|
Json::die([
|
||||||
|
'result'=>false,
|
||||||
|
'reason'=>'예약 테이블이 없음!'
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$scenarioObj = new Scenario($scenario, true);
|
$scenarioObj = new Scenario($scenario, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user