35 lines
1.1 KiB
PHP
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";
|
|
// 실패 시 다시 큐에 넣거나 로그 처리
|
|
}
|
|
} |