"; } // TEST=1 이면 실제 INSERT 없이 화면 출력만 $TESTMODE = false; if ($mode == "WEB" && !empty($_GET['TEST'])) $TESTMODE = true; if ($mode == "SHELL" && (($argv[4] ?? "") == "TEST")) $TESTMODE = true; if ($ROWCNT != "" && $LIMITCNT != "") $add_qry = " LIMIT $ROWCNT, $LIMITCNT"; else $add_qry = ""; echo "####[START][$getYesterday]" . ($TESTMODE ? "[TEST MODE - 저장 안 함]" : "[실제 저장]") . "####$ENT"; if (file_exists($GETDIR . "/include/function_class.php")) { include_once $GETDIR . "/include/function_class.php"; } if (file_exists($GETDIR . "/include/arrayinfo.php")) { include_once $GETDIR . "/include/arrayinfo.php"; } $hasFunc = class_exists('Func'); $func = $hasFunc ? new Func() : null; $jdb = new JDB(); $logName = $GETDIR . "/lib/access.log"; function writeLogSafe($func, $logName, $msg) { if ($func !== null && method_exists($func, 'PwriteLog')) { $func->PwriteLog($logName, $msg); } } writeLogSafe($func, $logName, "ACTION[Cron - Start - Daily Memberhis Fill]"); $qry = "SELECT dr_uid FROM tbl_driver WHERE dr_status = 'A' AND dr_type = 'UCO' ORDER BY dr_uid ASC $add_qry "; $result = $jdb->nQuery($qry, "driver list error"); echo "[$qry]$ENT"; $insertCnt = 0; $skipCnt = 0; while ($list = mysqli_fetch_array($result, MYSQLI_ASSOC)) { $druid = $list['dr_uid']; $qry_chk = "SELECT h_uid FROM tbl_memberhis WHERE h_druid = '" . $druid . "' AND h_date = '" . $getYesterday . "' LIMIT 1 "; $rt_chk = $jdb->fQuery($qry_chk, "check error"); if (!empty($rt_chk['h_uid'])) { echo "[SKIP][druid=$druid] already exists (h_uid=" . $rt_chk['h_uid'] . ")$ENT"; $skipCnt++; continue; } // opening = 대상일 이전 가장 최근 레코드의 h_balance_t (없으면 0) $qry_prev = "SELECT h_balance_t FROM tbl_memberhis WHERE h_druid = '" . $druid . "' AND h_date < '" . $getYesterday . "' ORDER BY h_date DESC, h_uid DESC LIMIT 1 "; $rt_prev = $jdb->fQuery($qry_prev, "prev balance error"); $opening = (!empty($rt_prev['h_balance_t'])) ? $rt_prev['h_balance_t'] : 0; unset($columns); unset($values); $columns = array(); $values = array(); $columns[] = "h_druid"; $values[] = $druid; $columns[] = "h_driveruid"; $values[] = ""; $columns[] = "h_date"; $values[] = $getYesterday; $columns[] = "h_balance_o"; $values[] = $opening; $columns[] = "h_balance_in"; $values[] = "0"; $columns[] = "h_balance_out"; $values[] = "0"; $columns[] = "h_balance_r"; $values[] = "0"; $columns[] = "h_balance_g"; $values[] = "0"; $columns[] = "h_balance_e"; $values[] = "0"; $columns[] = "h_balance_t"; $values[] = $opening; $columns[] = "h_createddate"; $values[] = date("YmdHis"); $columns[] = "h_comment"; $values[] = ""; if ($TESTMODE) { echo "[TEST/dry-run][druid=$druid][date=$getYesterday][opening=$opening]$ENT"; } else { $jdb->iQuery("tbl_memberhis", $columns, $values); echo "[INSERT][druid=$druid][date=$getYesterday][opening=$opening]$ENT"; } $insertCnt++; } $funcMsg = "ACTION[Cron - Finished - Daily Memberhis Fill] insert=$insertCnt, skip=$skipCnt\n"; writeLogSafe($func, $logName, $funcMsg); $time_end = microtime(true); $timeStr = "Running Time: " . ($time_end - $time_start) . " / INSERT: $insertCnt / SKIP: $skipCnt"; echo "####[END][$timeStr]####$ENT"; ?> HostName = $DB_HOST; $this->UserName = $DB_USER; $this->UserPass = $DB_PASSWORD; $this->DBName = $DB_NAME; $this->CONNECT(); } function CONNECT() { $this->DBConn = mysqli_connect($this->HostName, $this->UserName, $this->UserPass, $this->DBName); if (!$this->DBConn) $this->errMsg("Database Connection Error !!!", ""); else if (!(mysqli_select_db($this->DBConn, $this->DBName))) $this->errMsg("Database Select Error !!!", ""); mysqli_query($this->DBConn, "SET NAMES UTF8"); } function nQuery($query, $msg) { if (!($rlt = mysqli_query($this->DBConn, $query))) $this->errMsg($msg, $query); return $rlt; } function mysqli_result($res, $row = 0, $col = 0) { $numrows = mysqli_num_rows($res); if ($numrows && $row <= ($numrows - 1) && $row >= 0) { mysqli_data_seek($res, $row); $resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res); if (isset($resrow[$col])) { return $resrow[$col]; } } return false; } function rQuery($query, $msg) { if (!($rlt = mysqli_query($this->DBConn, $query))) $this->errMsg($msg, $query); return $this->mysqli_result($rlt, 0, 0); } function fQuery($query, $msg) { if (!($rlt = mysqli_query($this->DBConn, $query))) $this->errMsg($msg, $query); return mysqli_fetch_array($rlt); } function numQuery($query, $msg) { if (!($rlt = mysqli_query($this->DBConn, $query))) $this->errMsg($msg, $query); return mysqli_num_rows($rlt); } function iQuery($table, $fields, $values) { $fields_count = count($fields); $values_count = count($values); if ($fields_count != $values_count) $this->errMsg("Input Data Error.", "Fields # : $fields_count, Value # : $values_count"); $fields_que = ""; $values_que = ""; for ($i = 0; $i < $fields_count; $i++) { if (0 < $i) { $fields_que .= ","; $values_que .= ","; } $fields_que .= $fields[$i]; $values_que .= "'" . addslashes($values[$i]) . "'"; } $this->nQuery("insert into $table ($fields_que) values ($values_que)", "[ $table ] Table Input Error"); } function uQuery($table, $fields, $values, $where = "") { if (is_array($fields) & is_array($values)) { $fields_count = count($fields); $values_count = count($values); if ($fields_count != $values_count) $this->errMsg("Input Data Error.", "Fields # : $fields_count, Value # : $values_count"); $sub_que = ""; for ($i = 0; $i < $fields_count; $i++) { if (0 < $i) $sub_que .= ","; $sub_que .= $fields[$i] . "='" . addslashes($values[$i]) . "'"; } } else if (!is_array($fields) & !is_array($values)) $sub_que = " " . $fields . "='" . addslashes($values) . "' "; else $this->errMsg("Input Data Error.", "Fields # : $fields_count, Value # : $values_count"); if ($where) $sub_que .= " " . $where; $this->nQuery("update $table set $sub_que", "[ $table ] Table Input Error"); } function CLOSE() { mysqli_close($this->DBConn); $this->DELETE(); } function DELETE() { unset($this->DBConn); unset($this->UserName); unset($this->UserPass); unset($this->HostName); unset($this->DBName); } function errMsg($msg, $query) { echo("JDB Error Message !!
"); $msg = mysqli_errno($this->DBConn) . " : " . mysqli_error($this->DBConn) . "
User Message :
" . $msg . "
Query String :
" . $query;
echo("$msg");
exit;
}
}
?>