From 37fa5321cce384a8bcbbbe957f570e04f2c8c1bc Mon Sep 17 00:00:00 2001 From: Hide_D Date: Fri, 17 May 2024 18:18:37 +0000 Subject: [PATCH] =?UTF-8?q?=EC=B4=88=EA=B8=B0=20=EC=84=A4=EC=B9=98=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=A0=95=EB=8F=88,=20meekrodb=20=EB=B0=98?= =?UTF-8?q?=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- f_install/j_install_status.php | 11 ++------- f_install/j_setup_db.php | 14 +++-------- hwe/j_install_db.php | 43 +++++++++++++++++++++++----------- hwe/sammo/ResetHelper.php | 5 ++-- 4 files changed, 37 insertions(+), 36 deletions(-) diff --git a/f_install/j_install_status.php b/f_install/j_install_status.php index 642a3f20..5d3b9af0 100644 --- a/f_install/j_install_status.php +++ b/f_install/j_install_status.php @@ -17,18 +17,11 @@ if (!class_exists('\\sammo\\RootDB')) { $rootDB = RootDB::db(); -$rootDB->throw_exception_on_nonsql_error = false; -$rootDB->nonsql_error_handler = function ($params) { - Json::die([ - 'step' => 'conn_fail' - ]); -}; - -$rootDB->error_handler = function ($params) { +$rootDB->addHook('run_failed', function ($params) { Json::die([ 'step' => 'sql_fail' ]); -}; +}); $memberCnt = $rootDB->queryFirstField('SELECT count(`NO`) from member'); if ($memberCnt == 0) { diff --git a/f_install/j_setup_db.php b/f_install/j_setup_db.php index a9006ecc..96471480 100644 --- a/f_install/j_setup_db.php +++ b/f_install/j_setup_db.php @@ -150,20 +150,12 @@ if (!file_exists(ROOT . '/d_setting/.htaccess')) { $rootDB = new \MeekroDB($host, $username, $password, $dbName, $port, 'utf8mb4'); $rootDB->connect_options[MYSQLI_OPT_INT_AND_FLOAT_NATIVE] = true; -$rootDB->throw_exception_on_nonsql_error = false; -$rootDB->nonsql_error_handler = function ($params) { +$rootDB->addHook('run_failed', function ($args) { Json::die([ 'result' => false, - 'reason' => 'DB 접속에 실패했습니다.' + 'reason' => '에러.'. $args['error'] ]); -}; - -$rootDB->error_handler = function ($params) { - Json::die([ - 'result' => false, - 'reason' => 'SQL을 제대로 실행하지 못했습니다. DB상태를 확인해 주세요.' - ]); -}; +}); $mysqli_obj = $rootDB->get(); //로그인에 실패할 경우 자동으로 dbConnFail()이 실행됨. diff --git a/hwe/j_install_db.php b/hwe/j_install_db.php index 64d23225..238f72af 100644 --- a/hwe/j_install_db.php +++ b/hwe/j_install_db.php @@ -53,22 +53,17 @@ if($fullReset){ } } -function dbConnFail($params){ +$db = new \MeekroDB($host,$username,$password,$dbName,$port,'utf8mb4'); +$db->connect_options[MYSQLI_OPT_INT_AND_FLOAT_NATIVE] = true; + +$db->addHook('run_failed', function(){ Json::die([ 'result'=>false, 'reason'=>'DB 접속에 실패했습니다.' ]); -} +}); - -$db = new \MeekroDB($host,$username,$password,$dbName,$port,'utf8mb4'); -$db->connect_options[MYSQLI_OPT_INT_AND_FLOAT_NATIVE] = true; - -$db->throw_exception_on_nonsql_error = false; -$db->nonsql_error_handler = 'dbConnFail'; - - -$mysqli_obj = $db->get(); //로그인에 실패할 경우 자동으로 dbConnFail()이 실행됨. +$mysqli_obj = $db->get(); $prefix = basename(__DIR__); @@ -84,8 +79,6 @@ $result = Util::generateFileUsingSimpleTemplate( ], true ); - - if($result !== true){ Json::die([ 'result'=>false, @@ -93,7 +86,29 @@ if($result !== true){ ]); } -ResetHelper::clearDB(); +//최소한의 테이블 처리를 위해 수동으로 초기화하도록 하자 +if($mysqli_obj->multi_query(file_get_contents(__DIR__.'/sql/reset.sql'))){ + while(true){ + if (!$mysqli_obj->more_results()) { + break; + } + if(!$mysqli_obj->next_result()){ + break; + } + } + +} + +if($mysqli_obj->multi_query(file_get_contents(__DIR__.'/sql/schema.sql'))){ + while(true){ + if (!$mysqli_obj->more_results()) { + break; + } + if(!$mysqli_obj->next_result()){ + break; + } + } +} ServConfig::getServerList()[$prefix]->closeServer(); diff --git a/hwe/sammo/ResetHelper.php b/hwe/sammo/ResetHelper.php index a6cb8003..a5d3d80c 100644 --- a/hwe/sammo/ResetHelper.php +++ b/hwe/sammo/ResetHelper.php @@ -8,7 +8,7 @@ class ResetHelper{ } - static public function clearDB(){ + static public function clearDB():array{ $servRoot = realpath(__DIR__.'/../'); if(!file_exists($servRoot.'/logs') || !file_exists($servRoot.'/data')){ @@ -73,12 +73,13 @@ class ResetHelper{ } $prefix = DB::prefix(); + ServConfig::getServerList()[$prefix]->closeServer(); $db = DB::db(); $mysqli_obj = $db->get(); - $serverID = DB::prefix().'_'.date("ymd").'_'.Util::randomStr(4); + $serverID = $prefix.'_'.date("ymd").'_'.Util::randomStr(4); mkdir($servRoot.'/logs/'.$serverID, 0775); mkdir($servRoot.'/data/'.$serverID, 0775);