@마시마로 님의 짧은주소변환 애드온이 유용한대 매번 구글api에서 주소를 변환하는 애로사항이 있습니다.

 

그래서 api 작동은 글 작성시 1회만 해서 해당 글의 extra_var 필드에 받아온 짧은 주소를 저장 한 후 이 후 글 읽기에서는 이 저장된 짧은 주소를 보여주면 좋을 것 같아 질문을 드립니다.

 

$result 에 담긴 짧은주소 의 데이터를 

extra_var 필드에 저장(update) 하는 쿼리를 실행하는 php소스와  쿼리 xml

exra_var 필더에 저장된 값을 불러오는(get) 쿼리를 실행하는php 소스와 쿼리 xml

 

두가지를 어떻게 작성하는지 궁금합니다. 좋은 자료인데 호스팅사의 컨디션에 따라 구글과의 통신속도 등등 여러가지에 따라 api사용이 글 읽는 속도에 많은 영향을 준다면 사용하지 못하는 경우가 많을 듯 해서요. 저희도 글읽는 속도가 떨어져서 지금 사용을 중단한 상태입니다.

  • ? Lv17

    구조 자체는 api 를 계속 통신을 해야 하니 개선을 하면 당연히 좋을듯 한데 개발자님 응원만 해봅니다.
    다만 전 적용후 전/후 차이가 크게 느껴지지 않네요. 사이트가 작아서 그런가~

  • ? Lv17 Lv30
    내용에 언급된 것 처럼 호스팅사별로 api별로 통신 속도가 제각각입니다. 저희는 300ms 이상은 차이가 나서 멈칫 하는게 느껴지는 정도라 api 작동은 글읽기시에는 안하는 것으로 개선하고 싶습니다.
  • Lv30 ? Lv17
    네. 다른 분들도 좀 의견을 주셔서 꼭 성공 했으면 좋겠습니다.
  • Lv30
    @윤삼 님 께서 글 쓰기시에만 api에서 짧은 주소를 가져오면 기존 문서에 대한 문제점을 언급해 주셧네요. 이 경우를 고려한다면 글읽기시에 api에서 짧은주소를 가져오되 이때 가져온 값을 extra_var에 저장하고 저장된 값이 확인될 때는 api에서 가져오는 것을 하지 않는 것으로 처리하면 될 듯 합니다.

    extra_var에 짧은 주소가 있는지 확인
    있다면 -> 바로 불러오고
    없다면 -> API 통신해서 가져오기
  • Lv36

    XE 특성상 extra_var를 사용하려면 사전 등록을 해야 합니다.

    "앞으로 이 모듈에서 short_url이라는 확장변수를 사용하겠음! 내가 찜했음! 퉤!"라고 먼저 선언해 놓아야 나중에 short_url이라는 확장변수를 저장할 수 있어요. 미리 등록하지 않은 확장변수를 넣으면 코어에서 무시합니다. (글 작성시 폼에서 함께 들어오는 온갖 잡스러운 변수들이 모두 저장되면 곤란하기 때문) 확장변수 사전 등록을 할 때는 DocumentController 클래스의 insertDocumentExtraKey() 함수를 사용합니다. 게시판 설정에서 확장변수를 수동으로 등록해도 상관없습니다.

    일단 이렇게 등록해 놓으면 insertDocument나 updateDocument를 호출하면서 $obj->short_url 변수에 짧은주소를 넣어주기만 하면 됩니다. 알아서 저장됩니다. 특정 문서의 짧은주소를 불러올 때는 $oDocument->getExtraEidValue('short_url') 하시면 되고요.

  • Lv36 Lv30

    사용자정의를 말씀 드린게 아니구요.
    문서안의 extra_var 필드를 말씀드린거라서요.

    text로 넣을 수 있는 필드가 있습니다.

    포인트팡팡 애드온에서 댓글에서 당첨된 회원과 포인트를 기록해 두는 방식을 말씀 드린거에요.

  • Lv36 Lv30

    아래 글에도 댓글로 보여드렸던 이미지 인데요

    aa.png

    이게 문서 1개의 db  이거든요. 이 db에 하나의 필드로 가지고 있는 곳이요.

  • Lv30 Lv36
    아, 저건 옛날 방식이군요 ㅎㅎ

    문서를 가져올 때 모든 필드를 다 불러왔다면 $oDocument->get('extra_vars')로 접근이 가능할 거고요, 그렇지 않다면 별도 쿼리로 불러와야 할 거예요. 기존 애드온에 쿼리가 들어있을 테니 참고해 보세요.

    불러온 후에는 unserialize 해서 객체로 변환한 후, 원하시는 데이터를 추가하고, 다시 serialize 해서 저장해야 합니다. 저장하는 쿼리도 저 기능을 이미 사용하는 애드온에 함께 들어있을 거예요. documents 테이블의 extra_vars 필드를 update하는 것뿐일 테니, 쿼리 파일을 복사하실 필요도 없이 그냥 불러다 써도 무방합니다.

    단, 다른 자료에서 이미 저 필드를 사용하고 있다면 구현 방식에 따라 서로 덮어씌우는 상황이 발생할 수도 있습니다. 이런 문제 때문에 확장변수를 다른 테이블로 분리하게 된 거죠...
  • Lv36 Lv30
    네. 포인트팡팡에서 사용하고 있는 방식이라 @마시마로 님께 도움이 되고자 글ㅇ르 작성해 보았습니다. 포인트팡팡에서 말씀 하신방식으로 update 도 하고 get도 하고 하더라구요. 여러 애드온에서 같이 사용해도 큰 문제는 발생하지 않고 있구요. 저희 사이트는 후원도우미,포인트팡팡에서 함께 사용하는데 문제 없더라구요.
  • Lv36 Lv30
    어떤 방식이던 짧은 url을 저장해서 사용할 수 있다면 괜찮은 거 같아요~