Files
worker/worker.php
2025-12-22 17:07:52 +09:00

35 lines
1.1 KiB
PHP

<?php
$redisHost = getenv('REDIS_HOST') ?: 'redis';
$storagePath = getenv('STORAGE_PATH') ?: '/var/www/html/storage/requests';
$redis = new Redis();
try {
$redis->connect($redisHost, 6379);
$redis->select(10);
echo "[*] Connected to Redis. Waiting for data...\n";
} catch (Exception $e) {
die("Redis Connection Failed: " . $e->getMessage());
}
while (true) {
// 1. 입구 리스트에서 데이터 꺼내기
$item = $redis->brPop(['naver:queue'], 5);
if (!$item) continue;
$jsonStr = $item[1];
$data = json_decode($jsonStr, true);
// 2. 파일 저장
$fileName = sprintf('%s_%s.json', $data['articleNumber'], $data['requestDatetime']);
$filePath = $storagePath . '/' . $fileName;
if (file_put_contents($filePath, $jsonStr) !== false) {
echo "✅ [SUCCESS] File Saved: $fileName\n";
// 3. 파일 저장 성공 시에만 전송 큐로 넘김 (중요!)
$redis->lPush('naver:worker_queue', $jsonStr);
} else {
echo "❌ [ERROR] Failed to save file: $fileName\n";
// 실패 시 다시 큐에 넣거나 로그 처리
}
}