DATA/OTHER/news/webbot_news_env.php
<?php
// ============================================================
// 환경기 : webbot_news_env.php
// 루프 밖 단발 실행 - URL 배열 구성해서 타격기에 던지기
// ============================================================

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, wr_link1, x2_korean_name, ca_name,
           x2_parsing, x2_parsing_code, x2_ca2, x2_ca3
    FROM g5_write_webbot_news
    WHERE (x2_run = 1 OR x2_run = '1')
");
$stmt->execute();
$news_sources = $stmt->fetchAll(PDO::FETCH_ASSOC);

// → $pdo, $pdo_gnu, $news_sources 타격기에서 사용