sendInterimPaymentReminders(); if ($result['success']) { log_message("알림 발송 완료: " . $result['message']); log_message("발송 건수: " . $result['sent_count']); // 상세 결과 로그 foreach ($result['results'] as $item) { $status = $item['result']['success'] ? 'SUCCESS' : 'FAILED'; $message = $item['result']['message']; log_message("견적 {$item['wr_id']} (대리점: {$item['dealer_id']}) - {$status}: {$message}"); } } else { log_message("알림 발송 실패: " . $result['message']); } // 추가 작업: 오래된 로그 파일 정리 (30일 이상) $log_files = glob(G5_DATA_PATH . '/log/interim_reminders_*.log'); $cutoff_date = strtotime('-30 days'); foreach ($log_files as $log_file) { if (filemtime($log_file) < $cutoff_date) { @unlink($log_file); log_message("오래된 로그 파일 삭제: " . basename($log_file)); } } log_message("중도금 알림 크론 작업 완료"); // 웹 접근 시 JSON 응답 if (isset($_GET['key'])) { header('Content-Type: application/json; charset=utf-8'); echo json_encode([ 'success' => true, 'message' => '중도금 알림 발송이 완료되었습니다.', 'sent_count' => $result['sent_count'] ?? 0, 'timestamp' => date('Y-m-d H:i:s') ], JSON_UNESCAPED_UNICODE); } } catch (Exception $e) { $error_message = "크론 작업 오류: " . $e->getMessage(); log_message($error_message); // 웹 접근 시 에러 응답 if (isset($_GET['key'])) { header('Content-Type: application/json; charset=utf-8'); echo json_encode([ 'success' => false, 'message' => $error_message, 'timestamp' => date('Y-m-d H:i:s') ], JSON_UNESCAPED_UNICODE); } // CLI 모드에서는 exit code 1로 종료 if (php_sapi_name() === 'cli') { exit(1); } } ?>