Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

<?php
function getMyDataFromAPI()
{
    $cache_key = 'aaaaaaaa';
    $data = Rhymix\Framework\Cache::get($cache_key);

    if ($data)
        {
        return $data;
        }

echo date('Y-m-d H:i:s');
$data =  date('Y-m-d H:i:s');
        
    $ttl = 3600;
    Rhymix\Framework\Cache::set($cache_key, $data, $ttl);

    return $data;
}

$data = getMyDataFromAPI();
echo '<pre>';
print_r($data);
echo '</pre>';

?>

 

 

반복된 질문 죄송합니다. ㅠㅠ

 

위 코드가 있습니다.

print_r($data); 데이터는 잘뜨는데(두줄짜리 시계)

 

새로고침 할때마다 초데이터가 갱신이 됩니다.(캐시가 제대로 된거라면 과거의 초에 멈춰있어야함)

 

이건 계속 getMyDataFromAPI() 함수를 다시 정의하고 다시 캐시값에 저장 시켜서 그런 걸까요?

 

그렇다면 다른 페이지에서 아래 데이터를 불러오는 방법은 무엇일까요?

$data = getMyDataFromAPI();
echo '<pre>';
print_r($data);
echo '</pre>';



지금 저페이지에선 캐시를 생성해주고 3600초간 유지

저 페이지를 제가 또 열면 또 새로운 캐시를 생성 해주고 3600초간 유지

 

되는것으로 보이고

 

실질적으로 캐시데이터는 다른 페이지에서 불러와야지 정상적인 사용이 가능할 것으로 생각됩니다.

 

제가 잘 이해 한게 맞을까요?

  • Lv12
    추가로 캐시는 무조건 data 라는 이름으로만 저장해야할까요?

    datag로 이름을 바꿔버리니 시계 출력이 1개로 줄어듭니다.


    <?php
    function bbbbbb()
    {
    $cache_key = 'aaaaaaaa';
    $datag = Rhymix\Framework\Cache::get($cache_key);

    if ($datag)
    {
    return $datag;
    }

    echo date('Y-m-d H:i:s');
    $datag = date('Y-m-d H:i:s');

    $ttl = 3600;
    Rhymix\Framework\Cache::set($cache_key, $datag, $ttl);

    return $datag;
    }

    $data = bbbbbb();
    echo '<pre>';
    print_r($datag);
    echo '</pre>';

    ?>
  • Lv12 Lv5
    $data 변수에 캐시된 데이터를 담아두셨으니, 아래의 print_r($datag) 에서 아무 값이 출력되지 않는 것입니다.
  • Lv12
    function asdf111()
    {
    echo 'asdfasdf';
    }

    $data2 = asdf111();

    그냥 이렇게 한 것과 차이점을 못느끼겠네요 ㅠㅠ
  • Lv12

    두 예제 모두 코어에서 오브젝트 캐시가 켜져 있어야 사용할 수 있습니다. 이게 화근이였네요

    이렇게 설정하니 시간이 과거에 멈춰 있습니다.(캐시가 작동됨)

     

    그리고 결정적으로

    a 페이지에서 b 페이지의 캐시를 생성하지 못하면 

    이 캐시 사용법은 기존의 외부페이지에서 60분캐시 설정하던 것과 다를것이 없다 라는 결론을 얻게 되었습니다.