Files
edu/bbs/sync_user.php
T

51 lines
1.9 KiB
PHP

<?php
/**
* sync_users.php - 낮 12시, 밤 12시 자동 실행용
*/
declare(strict_types=1);
require_once __DIR__ . '/db_conn.php';
try {
$pdo = db_conn();
// 1. 현재 우리 DB에 등록된 전체 사용자 ID 가져오기
$stmt = $pdo->query("SELECT member_id FROM edu_users WHERE is_active = 'Y'");
$members = $stmt->fetchAll(PDO::FETCH_COLUMN);
echo "[" . date('Y-m-d H:i:s') . "] 동기화 시작 (대상: " . count($members) . "명)\n";
foreach ($members as $mid) {
// 2. 인트라넷 API 호출
$apiUrl = "http://erp.hanmaceng.co.kr/intranet/sys/model/EduJsonAPI.php?member_id=" . urlencode($mid);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$response = curl_exec($ch);
curl_close($ch);
if ($response) {
$apiData = json_decode($response, true);
if (($apiData['rstCd'] ?? '') == 200 && !empty($apiData['data'])) {
$userData = $apiData['data'][0];
$name = $userData['NM'] ?? $userData['name']; // 실제 API 키값 확인 필요
$rank = $userData['RANK_NM'] ?? $userData['rank_name'];
// 3. 정보 업데이트 (이름이나 직책이 변경되었을 수 있으니 갱신)
$upd = $pdo->prepare("UPDATE edu_users SET name = ?, rank_name = ?, updated_at = NOW() WHERE member_id = ?");
$upd->execute([$name, $rank, $mid]);
echo " - ID {$mid}: 업데이트 완료 ({$name} {$rank})\n";
}
}
// 서버 부하 방지를 위해 0.1초씩 쉬어줌
usleep(100000);
}
echo "전체 동기화 완료!\n";
} catch (Exception $e) {
error_log("[Sync Error] " . $e->getMessage());
echo "오류 발생: " . $e->getMessage();
}