40 lines
1.2 KiB
PHP
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']);
|
|
}
|
|
} |