본문으로 건너뛰기

소스 변경 전체 보기

PHP 8 · GODO25
변경 파일 수: 1개
변경 파일 목록
총 1개
정책 캐시 안정성 강화
DatabaseStorage.phpComponent/Policy/Storage/
변경 파일 코드
추가삭제
정책 캐시 안정성 강화
Component/Policy/Storage/DatabaseStorage.php+18-6
변경 전DatabaseStorage.php
$length = count($arrName);
 
if ($length == 1) {
$getData = json_decode(SimpleCache::init(SimpleCache::REDIS)->hgetSet(
DB_CONFIG,
"groupCode.$arrName[0]",
function () use ($arrName) {
$strSQL = sprintf("SELECT code, data FROM %s WHERE groupCode = '%s'", DB_CONFIG, $arrName[0]);
$getData = $this->db->secondary()->query_fetch($strSQL);
 
 
 
 
 
return json_encode($getData);
},
A_HOUR
), true);
 
 
if (empty($getData) === false) {
foreach ($getData as $val) {
}
}
} else if ($length > 1) {
$getData = json_decode(SimpleCache::init(SimpleCache::REDIS)->hgetSet(
DB_CONFIG,
"groupCode.$arrName[0]:code.$arrName[1]",
function () use ($arrName) {
$strSQL = sprintf("SELECT code, data FROM %s WHERE groupCode = '%s' AND code = '%s'", DB_CONFIG, $arrName[0], $arrName[1]);
$getData = $this->db->secondary()->query_fetch($strSQL, null, false);
 
 
 
 
 
return json_encode($getData);
},
A_HOUR
), true);
 
if (empty($getData['data']) === false) {
$json = json_decode(($getData['data']), true);
for ($i = 2; $i < $length; $i++) {
 
변경 후DatabaseStorage.php
$length = count($arrName);
 
if ($length == 1) {
$cachedPolicy = SimpleCache::init(SimpleCache::REDIS)->hgetSet(
DB_CONFIG,
"groupCode.$arrName[0]",
function () use ($arrName) {
$strSQL = sprintf("SELECT code, data FROM %s WHERE groupCode = '%s'", DB_CONFIG, $arrName[0]);
$getData = $this->db->secondary()->fetchQueryResultOrNull($strSQL);
if ($getData === null) {
// 조회 실패를 캐시에 남기면 TTL 동안 빈 정책이 반환된다.
return null;
}
 
return json_encode($getData);
},
A_HOUR
);
$getData = json_decode($cachedPolicy ?? '', true);
 
if (empty($getData) === false) {
foreach ($getData as $val) {
}
}
} else if ($length > 1) {
$cachedPolicy = SimpleCache::init(SimpleCache::REDIS)->hgetSet(
DB_CONFIG,
"groupCode.$arrName[0]:code.$arrName[1]",
function () use ($arrName) {
$strSQL = sprintf("SELECT code, data FROM %s WHERE groupCode = '%s' AND code = '%s'", DB_CONFIG, $arrName[0], $arrName[1]);
$getData = $this->db->secondary()->fetchQueryResultOrNull($strSQL, false);
if ($getData === null) {
// 조회 실패를 캐시에 남기면 TTL 동안 빈 정책이 반환된다.
return null;
}
 
return json_encode($getData);
},
A_HOUR
);
$getData = json_decode($cachedPolicy ?? '', true);
if (empty($getData['data']) === false) {
$json = json_decode(($getData['data']), true);
for ($i = 2; $i < $length; $i++) {