캐시 파일의 경로 ?

https://xetown.com/rxe_file/874593

 

위 위젯에서 api로 부터 받아온 값을 캐시에 저장해서 캐시만료시까지 api 에서 새로운 값을 받아오지 않고 계속 이용합니다.

아무리 찾아도 XE의 경로안에서 관련 파일을 못찾겠는데요.

 

어디에 저장을 해 두었다가 요청시 사용하는 것인가요??

 

  • profile

    아마도 정확한 경로가 위젯 소스에 박혀있지 않을까요?

     

    만약 XE의 CacheHandler를 활용한다면 특정 경로에 캐시파일이 따로 있는 게 아니라 apc, memcached 등 XE에서 설정한 오브젝트 캐시에 저장될 수도 있습니다.

  • profile profile

    따로 있지 않다면 그럼 해당 파일에 정보를 제가 확인하고 싶을때 확인이 되지 않는 건가요?? 요즘 값이 NUll 로 출력되는 경우가 잦아서 매칭 되는 파일을 좀 열어보고 싶어서요. 저흰 mamcached 를 사용합니다.

     

     

    $oCacheHandler = CacheHandler::getInstance('object');

  • profile profile
    그럼 엑스이에는 캐시파일이 없고 맴캐시 서버에 거의 저장되었습니다
  • profile profile
    우분투인데 어떤 경로로 접근하면 해당 파일을 열어볼 수 있을까요?
  • profile profile
    저도서버적으로확인까지는 모르겠구요.. 보고싶은 변수을 debugPrint를사용하여 확인하시는건 어떠신가요
  • profile profile
    파일은 없습니다.
    XE에서 CacheHandler로 저장했다면 XE에서 CacheHandler를 사용해서 불러와야 해요.
  • profile profile

    개별 파일로 존재하는게 아니군요. 흠.. 그럼 위젯에서 불러온 값이 올바른 캐시값이라고 판단하는게 좋겠군요. 특정한 상황에서 값을 가져오지 못한 상태 Null 로 저장이 되었다고 봐야 겠습니다.

    저는 파일 형태라면 혹시 제대로 저장된게 잘못 불러오는 건가 하는 것을 확인해 보고 싶었는데 그럴 필요는 없는 상황인 듯 하네요.

    api에서 가져올때 api측에서 갱신된 시간과 그리고 공기지수 값이 가져오게 되는데 Null 값이 출력될때는

    09:00 / Null / Null 의 값으로 출력이 되더라구요. 시간은 어찌 고정된 09:00시 를 표시하는지...

  • profile profile
    위젯 구성파일 중
    api.fnc.php 파일에서 api에서 값을 가져와 캐시에 저장을 하게 됩니다.

    이것을 위젯의 class.php 파일에서
    require _XE_PATH_ . 'widgets/pr_weather_v2/api.func.php';

    불러와 사용하게 되는데요.

    그럼 api.fnc.php 파일을 XE위젯이 다른 곳에서 실행을 하게 되면
    캐시에 Null 이 나오는 값이 저장이 되는 걸까요???
  • profile profile

    캐시에 저장하고 다시 불러오는 루틴은 매우 안정적입니다. 가끔씩 api에서 데이터를 제대로 못 가져올 때 캐시에 null이 저장되고, 그걸 그대로 불러다 쓰니까 한동안 null값이 유지될 가능성이 훨씬 높습니다. api에서 불러온 데이터를 가공하여 캐시에 저장하는 부분을 눈여겨보시기 바랍니다. null값이 있을 경우 캐시에 저장하지 않도록 조건을 걸어야 합니다.

    한국 시간이 국제 표준시보다 9시간 빠르기 때문에, 0 또는 null을 시간 데이터로 취급하고 한국 시간으로 변환하면 09:00이 나옵니다.

  • profile profile
    가끔이 아니고 지금 위젯의 동작에서 뭔가 Null 값이 되는 조건이 있는 것 같아요. 이 위젯을 사용하는 곳을 제가 X86 밖에 확인하지 못해 그곳과 비교를 하지만 X86은 저희보다 굉장히 심하게 거의 null 값입니다.

    뭔가 오류가 있어 보여요.
  • profile profile

    제가 접속해 보면 x86과 웹지기님 사이트 모두 날씨가 정상적으로 나옵니다. 웹지기님 사이트는 위치까지 꽤 정확하게 나오고요. 혹시 특정 지역의 날씨만 못 불러오는 게 아닌지 의심이 되기도 하는군요.

    x86은 카페24 가상서버인데, 요즘 카페24에서 외부 api 연동하는 것이 원활하지 않다는 제보가 있기는 합니다. 이것 때문에 오류 발생 확률이 늘어날 수도 있겠네요.

    api.func.php 소스를 보니 1) api에서 데이터를 가져오는 데 실패하고 2) 기존에 캐시된 데이터가 없는 경우, 즉 처음 접속하는 시점에 api 연동이 제대로 되지 않으면 대부분 빈 값으로 캐시에 저장되고, 이후에도 계속해서 캐시에 저장된 빈 값을 그대로 쓰는 것 같습니다.

  • profile profile

    공기정보만 보시면 됩니다.
    좋음 으로 표시되는 경우 실제 값이 있어 좋음일 수 있고 아닐수 있어서 클릭을 해 보셔야 합니다.

    좋음 이라고 클릭해서 실제 값을 보면 Null 인 경우는 값이 없는 경우 입니다.

    공기질 값이 0인 경우도 기준치 이하라서 좋음으로 표시가 되요.

    지역하고 상관 없는 것은 제가 확인했습니다. 현위치를 사용치 않으면 중구 필동의 값을 가져오는데 마찬가지로 NULL 이 출력되는 경우가 굉장이 많습니다.

     

    - 캐시파일을 재생성 하거나 , 해당위치의 값을 처음으로 가져오가나 하는 경우는 오히려 문제가 없는 것 같습니다.

    - 이미 캐시된 값을 가지고 있다가 다시 갱신되는 시점에서 문제가 발생하는 것 같은 생각이 들고 있습니다.

    X86은 지금 캐시가 길게 잡혀 있을 겁니다.
    저희는 이를 극복하기 위해 10분으로 줄여 놓았습니다.

  • profile profile
    문제는 같은 위치를 처음 접속하는 것이 아닌데 경우에 따라서 Null을 가지게 되는 경우가 너무 잦아서요.

    이 자료 배포 초기에 저희가 모두 놓쳤던 이유는
    "좋음" 이라고 출력되고 있어서 아무도 몰랐습니다.

    그런데 값이 Null 일때도 좋음이라고 나오더라구요.
  • profile profile

    api.func.php

    파일 상단에 if(!defined('__XE__')) exit(); 이걸 넣으면 도움이 될지 모르겠지만
    일단 넣어보려구요 ㅡㅡ;

     

    이건 상관이 없네요. 이것 넣어도 값이 Null 이 되는 상황이 발생하네요.

  • profile profile
    아, 날씨는 정상인데 통합대기상태를 눌러보면 null이군요.

    날씨는 국내 기상청에서 불러오고 공기정보는 해외 사이트에서 불러옵니다. 국내 호스팅 특성상 공기정보를 불러오는 데 실패할 확률이 훨씬 높습니다. 타임아웃이 3초로 되어 있는데, 상당히 빡빡해요.
  • profile profile

    일단 저희는 제작자분이 검토해주시기 전까지 극복을 해보려고 캐시 시간을 10분으로 해서 Null 값을 가지더라도 10분 후에 다시 제대로 된 값을 가져올 수 있게 해 놓았습니다.

    5초로 늘렸는데 마찬가지더라구요. 캐시유지시간을 30분으로 길게 해 놓으면 null 상태의 빈도가 오히려 더 잦아지더라구요.

    이게 단순 api 로 가져올때 통신 문제로 못가져온다는 느낌을 받지 못하는게.
    캐시파일 재생성시는 실패하는 적이 한번도 없습니다.
    그리고 일부러 수동으로 지역을 리스트에서 골라서 직접 api로 부터 받아오게 해보면 잘 받아옵니다.(물론 캐시된 지역이 아니라야죠..)

    캐시 만료시점에 새로 뭔가 다시 가져올때 못가져오는건지 아니면 무엇때문인지 캐시 만료시 동작하는 순간 뭔가 좀 이상합니다.

  • profile
    값이 없을때도 "좋음"으로 표시되는 것 때문에 제대로 확인이 안되는 문제로 마지막 조건문을 살짝 바꾸고 추가해서 값이 없을때는 "미수신"으로 출력되게 일단 고쳐 놓았습니다.
  • profile
    api측이 문제가 있는건지 캐시파일을 수동으로 재생성해도 값이 NULL로 나오네요. 캐시파일 재생성과는 또 상관없이 안될때는 계속 안되는게 맞는거 같네요.

    오늘은 저녁부터 계속 수신된 값이 NULL 이네요.
  • profile profile
    현재 공기정보 api가 502 Bad Gateway 에러를 뿜고 있습니다.
    해외라서 느린 것은 물론이고, 이 api가 원래부터 그다지 안정적이지 못한가 봐요...
  • profile profile
    자료 배포 초기때와 다르게 api 컨디션이 많이 안좋아졌나 보네요.
  • profile profile
    어제 저녁에 아예 안된 것은 api쪽 문제가 있어서 그랬던 것 같네요.
    저희가 X86에 비해 지금은 잘되고 있는 이유가 아마도 timeout을 3->5초로 변경한점과 api와 연결이 보다 원할한 것 이 이유가 될 수도 있겠습니다.

    언제부터인가 갑자기 잘 안되서 구조적으로 뭔가 문제가 있나 하고 원인을 찾아보려 시도를 했었는데 이때 타임아웃을 늘린게 저희쪽은 실패하는 횟수가 현격하게 줄은게 아닌가 하는 생각도 듭니다.

    5초로 해 놓은 지금 상태 조금더 모니터링 해 보고 실패하는 횟수가 보이면 조금더 늘려서 모니터링해 봐야겠습니다.
  • profile profile
    api가 이상이 없는 것 같은 상황(실제 url을 브라우저에서 입력하여 확인..)에서도 계속 위젯에서는 값을 받아오지 못하는 현상이 지속되서 timeout 을 5->10으로 늘려봤습니다.