Files
confirms/app/Commands/NaverWorker.php
2025-12-22 19:38:41 +09:00

40 lines
1.2 KiB
PHP

<?php
namespace App\Commands;
use CodeIgniter\CLI\BaseCommand;
use CodeIgniter\CLI\CLI;
class NaverWorker extends BaseCommand
{
protected $group = 'Workers';
protected $name = 'naver:worker';
protected $description = 'Redis에서 데이터를 꺼내 DB에 저장하고 네이버 API를 호출합니다.';
public function run(array $params)
{
$redis = new \Redis();
$redis->connect('redis', 6379);
$redis->select(10);
CLI::write('🟢 Naver Worker running...');
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);
}
}
}
private function processTask($payload)
{
// 여기서 DB 모델(ConfirmModel)을 불러와 저장하고
// CURL을 사용하여 네이버 API를 호출하는 로직을 작성합니다.
CLI::write("Processing data received at: " . $payload['received_at']);
}
}