게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
웹 관련... php, ajax, 외부 api 관련 개념이 부족합니다.
게시물ID : programmer_12898짧은주소 복사하기
작성자 : 물어라이코스
추천 : 0
조회수 : 816회
댓글수 : 6개
등록시간 : 2015/08/22 02:42:21
옵션
  • 본인삭제금지
조금 깁니다. ㅠ.ㅠ

배경이 되는 상황을 말씀드려야할 것 같아서요...

...비루한 대학 졸업작품입니다.;



지금까지 php 기초만 해오다가..

오유 프게에서 조언을 얻어 코드이그나이터, 부트스트랩을 이용해서 홈페이지를 만들고 있습니다.

바탕이 되는 데이터는 외부 api 에서 가져오고 있구요.

json 도 처음 다뤄봅니다 --;;;


처음에 모든 기능을 우선 구현해봤는데... 어마어마 했습니다.

로딩시간이요 -_-;;;;

한번의 서비스를 이용하는데 총 로딩 시간이 30초~50초 가량 걸리더군요.

더 큰 문제는 도중에 사용자가 페이지를 꺼버리거나 ESC를 누르면 데이터가 중간에 입력되다가 중단. ㅠㅠ

(같은 내용을 두번째 이용할때는 자체 DB에서 불러오면서 0.1초 이내로 걸립니다.)


하하하... 우선 기능 구현은 다 했다는 점에서 만족하며 뜯어고치고 있습니다.

제게 당장 필요한건 비동기식 처리더라구요.

사용자는 가장 기본적인 틀만 불러오고 (1~2초) 우선 띄워줍니다.

그리고 각각 부분에서 필요한 부분들을 ajax의 get을 통해 ($.get) 값을 되돌려주는 페이지를 요청하게되고, 그 페이지가 응답이 돌아오면 사용자 페이지에 다시 뿌려주도록 고치고 있습니다.

그러던 중 궁금한점이 생겨서요...


여기까지 요약---
1. 외부 api를 불러와 db에 저장하고, 이걸 다시 사용자에게 뿌려주는 웹서비스를 개발 중
2. 기능 구현은 완료하였으나 페이지 로딩 시간이 너무 길고 중간에 중단할 경우 불상사가 발생함.
3. ajax의 get을 이용하여 외부api->DB 를 작동시켜주는 웹페이지를 불러오도록 다시 제작함.
4. 3번의 작업이 완료되면 사용자가 보고 있는 페이지에 표시해줌.


이때 궁금한게 ajax에서 get을 했을때의 처리 주체 입니다.
혹시나 싶어서
반복문을 만들고 1초에 1~100까지의 숫자를 DB에 집어넣는 문서를 만들었습니다.

해당 페이지를 웹브라우저에서 직접 호출하니 1 부터 차례대로 하나씩 입력을 하더군요.
근데 웹페이지를 종료시켰음에도 해당 작업은 계속해서 이루어졌습니다.(!?왜지?!)
혹시나 싶어서 $.get으로 해당 페이지를 로딩시킨 후 웹 브라우저를 종료하였으나 마찬가지로 DB에는 계속해서 데이터가 입력되었습니다.

좋다~~~ 라고 생각하고 있었으나 걱정거리가 생겼습니다.

외부 api가 불안정하여 만약 데이터를 제대로 제공해주지 못할 경우 다시 요청하도록 설계를하고 있는데...
문제는 이 외부 api가 계속 죽어 있으면 그동안에 재요청 작업이 무한히 일어날 것이고 사용자가 많다면 그 사용자수 만큼 요청이 쇄도할 것 같습니다.

왜 브라우저를 종료했음에도 계속해서 작업이 이루어지는걸까요?
만약 그렇다면 무한루프에 빠졌을때 해당 작업은 언제까지 반복되는 걸까요?
관련 설정을 아파치에서 해주는 거겠죠? 음... 뭘까요 -_-;;;
만약 이런 경우라면 어떻게 설계해야하고 코딩해야하는지 ... 그 방향조차 모르겠습니다. ㅜㅜ


전체적인 프로그램 흐름도
1-1. 사용자 요청 -> 내부 DB에 해당 데이터 존재여부 체크 -> 존재할 경우 표시해줌
1-2. 사용자 요청 -> 내부 DB에 해당 데이터 존재여부 체크 -> 존재하지 않을 경우 외부 api에 요청하여 데이터를 받아옮
1-2-1. 받아온 데이터를 DB에 저장함.
1-2-2. DB에 저장한 내용을 사용자에게 표시해줌.


현재 외부 api를 받아오는 과정 - 사용 언어 PHP CURL
1. 외부 api 요청
2. 받아온 데이터 검사
2-1. curl_errno 로 에러 번호가 존재하는지 체크
2-2. curl_getinfo 로 http_code가 200인지 체크
2-3. curl_exec로 받은 데이터에서 문제가 있는지 체크
3. 데이터 검사 결과
3-1. 에러 검출 시 1번부터 다시 시작
3-2. 검사 통과시 curl_exec로 받은 데이터를 리턴.


질문 요약
1. 외부 api를 가져와서 DB에 입력하거나 사용자에게 보여줘야함.
2. 외부 api가 신뢰할 수 없음. 만약 요청에 실패할 경우 재요청하도록 만드는 중
3. 그런데 외부 api가 계속 죽어 있다면 재요청을 무한히 하게 될텐데 어떻게 해야할지?
4. 혹은 이러한 문제가 발생할 수 있으니 외부 api를 받아오는 절차 자체를 다시 설계해야하는 것인지...
5. ajax를 이용하여 데이터를 로딩하는 페이지를 따로 만드는 행위 자체가 매우 위험한 행위인지...
6. 방향 혹은 힌트만이라도 주시면... 굽신굽신...
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호