<?php
// ============================================================
// 환경기 : bybit_total_env.php
// 루프 밖 단발 실행 - 심볼 배열 구성해서 타격기에 던지기
// ============================================================
function get_db_connection() {
try {
$db_upbit = null;
@include '/home/www/DB/db_upbit.php';
if (!($db_upbit instanceof PDO)) return null;
$pdo = $db_upbit;
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
} catch (Throwable $e) {
return null;
}
}
function get_gnu_connection() {
try {
$db_gnu = null;
$pdo_gnu = null;
$pdo = null;
@include '/home/www/DB/db_gnu.php';
if ($db_gnu instanceof PDO) {
$db_gnu->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $db_gnu;
}
if ($pdo_gnu instanceof PDO) {
$pdo_gnu->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo_gnu;
}
if ($pdo instanceof PDO) {
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
return null;
} catch (Throwable $e) {
return null;
}
}
// DB 연결
$pdo = get_db_connection();
$pdo_gnu = get_gnu_connection();
// 그누보드에서 활성 심볼 읽기 (단발)
$stmt = $pdo_gnu->prepare("
SELECT wr_subject FROM g5_write_daemon_total_bybit
WHERE (x2_run = 1 OR x2_run = '1')
");
$stmt->execute();
$all_symbols = $stmt->fetchAll(PDO::FETCH_COLUMN);
// 심볼 정규화
$clean_symbols = [];
foreach ($all_symbols as $sym) {
$sym = strtoupper(trim((string)$sym));
if ($sym === '') continue;
if (strpos($sym, 'USDT') === false && strpos($sym, '-') === false) {
$sym .= 'USDT';
}
if (!in_array($sym, $clean_symbols, true)) $clean_symbols[] = $sym;
}
// 60개씩 청크로 포장
$symbol_chunks = array_chunk($clean_symbols, 60);
// API 주소 정의 (단발)
$API_TICKERS = 'https://api.bybit.com/v5/market/tickers?category=linear&symbol=';
$API_KLINE = 'https://api.bybit.com/v5/market/kline?category=linear&interval=1&limit=1&symbol=';
$API_ACCOUNT_RATIO = 'https://api.bybit.com/v5/market/account-ratio?category=linear&period=1d&limit=1&symbol=';
$API_INDEX_KLINE = 'https://api.bybit.com/v5/market/index-price-kline?category=linear&interval=1&limit=1&symbol=';
// → $pdo, $symbol_chunks, $API_* 타격기에서 사용