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(); }