php_worker 수정

This commit is contained in:
2025-12-23 16:19:22 +09:00
parent 454bb77a07
commit 76e79ea4cf
3 changed files with 52 additions and 13 deletions

View File

@@ -14,19 +14,35 @@ class NaverWorker extends BaseCommand
public function run(array $params)
{
$redis = new \Redis();
$redis->connect('redis', 6379);
$redis->select(10);
CLI::write('🟢 Naver Worker running...');
try {
$redis->connect('redis', 6379);
$redis->select(9);
CLI::write(CLI::color('🟢 Naver Worker running...', 'green'));
} catch (\Exception $e) {
CLI::error("Redis 연결 불가: " . $e->getMessage());
return;
}
while (true) {
// Redis에서 데이터가 들어올 때까지 대기 (Blocking Pop)
// 'naver:raw_queue'는 api_receiver.php에서 lPush한 이름과 같아야 함
$result = $redis->brPop(['naver:raw_queue'], 30);
if ($result) {
$payload = json_decode($result[1], true);
$this->processTask($payload);
try {
// 'brPop'은 [큐이름, 데이터] 형태의 배열을 반환합니다.
$result = $redis->brPop(['naver:raw_queue'], 30);
$result = $redis->brPop(['naver:raw_queue'], 30);
if ($result) {
try {
$payload = json_decode($result[1], true);
$this->processTask($payload); // 실제 DB 저장 등
} catch (\Exception $e) {
// 처리 실패 시 다시 큐에 넣어서 나중에 재시도하게 함
$redis->lPush('naver:raw_queue', $result[1]);
CLI::error("처리 실패로 데이터를 큐에 다시 넣었습니다.");
}
}
} catch (\Exception $e) {
CLI::error("Worker Loop Error: " . $e->getMessage());
// 루프가 너무 빨리 돌며 에러를 뿜는 것을 방지
sleep(1);
}
}
}
@@ -35,6 +51,6 @@ class NaverWorker extends BaseCommand
{
// 여기서 DB 모델(ConfirmModel)을 불러와 저장하고
// CURL을 사용하여 네이버 API를 호출하는 로직을 작성합니다.
CLI::write("Processing data received at: " . $payload['received_at']);
CLI::write("Processing: " . ($payload['request_data']['articleNumber'] ?? 'Unknown'));
}
}