<div>조금 깁니다. ㅠ.ㅠ</div> <div><br></div> <div>배경이 되는 상황을 말씀드려야할 것 같아서요...</div> <div><br></div> <div>...비루한 대학 졸업작품입니다.;</div> <div><br></div> <div><br></div> <div><br></div> <div>지금까지 php 기초만 해오다가..</div> <div><br></div> <div>오유 프게에서 조언을 얻어 코드이그나이터, 부트스트랩을 이용해서 홈페이지를 만들고 있습니다.</div> <div><br></div> <div>바탕이 되는 데이터는 외부 api 에서 가져오고 있구요.</div> <div><br></div> <div>json 도 처음 다뤄봅니다 --;;;</div> <div><br></div> <div><br></div> <div>처음에 모든 기능을 우선 구현해봤는데... 어마어마 했습니다.</div> <div><br></div> <div>로딩시간이요 -_-;;;;</div> <div><br></div> <div>한번의 서비스를 이용하는데 총 로딩 시간이 30초~50초 가량 걸리더군요.</div> <div><br></div> <div>더 큰 문제는 도중에 사용자가 페이지를 꺼버리거나 ESC를 누르면 데이터가 중간에 입력되다가 중단. ㅠㅠ</div> <div><br></div> <div>(같은 내용을 두번째 이용할때는 자체 DB에서 불러오면서 0.1초 이내로 걸립니다.)</div> <div><br></div> <div><br></div> <div>하하하... 우선 기능 구현은 다 했다는 점에서 만족하며 뜯어고치고 있습니다.</div> <div><br></div> <div>제게 당장 필요한건 비동기식 처리더라구요.</div> <div><br></div> <div>사용자는 가장 기본적인 틀만 불러오고 (1~2초) 우선 띄워줍니다.</div> <div><br></div> <div>그리고 각각 부분에서 필요한 부분들을 ajax의 get을 통해 ($.get) 값을 되돌려주는 페이지를 요청하게되고, 그 페이지가 응답이 돌아오면 사용자 페이지에 다시 뿌려주도록 고치고 있습니다.</div> <div><br></div> <div>그러던 중 궁금한점이 생겨서요...</div> <div><br></div> <div><br></div> <div>여기까지 요약---</div> <div>1. 외부 api를 불러와 db에 저장하고, 이걸 다시 사용자에게 뿌려주는 웹서비스를 개발 중</div> <div>2. 기능 구현은 완료하였으나 페이지 로딩 시간이 너무 길고 중간에 중단할 경우 불상사가 발생함.</div> <div>3. ajax의 get을 이용하여 외부api->DB 를 작동시켜주는 웹페이지를 불러오도록 다시 제작함.</div> <div>4. 3번의 작업이 완료되면 사용자가 보고 있는 페이지에 표시해줌.</div> <div><br></div> <div><br></div> <div>이때 궁금한게 ajax에서 get을 했을때의 처리 주체 입니다.</div> <div>혹시나 싶어서</div> <div>반복문을 만들고 1초에 1~100까지의 숫자를 DB에 집어넣는 문서를 만들었습니다.</div> <div><br></div> <div>해당 페이지를 웹브라우저에서 직접 호출하니 1 부터 차례대로 하나씩 입력을 하더군요.</div> <div>근데 웹페이지를 종료시켰음에도 해당 작업은 계속해서 이루어졌습니다.(!?왜지?!)</div> <div>혹시나 싶어서 $.get으로 해당 페이지를 로딩시킨 후 웹 브라우저를 종료하였으나 마찬가지로 DB에는 계속해서 데이터가 입력되었습니다.</div> <div><br></div> <div>좋다~~~ 라고 생각하고 있었으나 걱정거리가 생겼습니다.</div> <div><br></div> <div>외부 api가 불안정하여 만약 데이터를 제대로 제공해주지 못할 경우 다시 요청하도록 설계를하고 있는데...</div> <div>문제는 이 외부 api가 계속 죽어 있으면 그동안에 재요청 작업이 무한히 일어날 것이고 사용자가 많다면 그 사용자수 만큼 요청이 쇄도할 것 같습니다.</div> <div><br></div> <div>왜 브라우저를 종료했음에도 계속해서 작업이 이루어지는걸까요?</div> <div>만약 그렇다면 무한루프에 빠졌을때 해당 작업은 언제까지 반복되는 걸까요?</div> <div>관련 설정을 아파치에서 해주는 거겠죠? 음... 뭘까요 -_-;;;</div> <div>만약 이런 경우라면 어떻게 설계해야하고 코딩해야하는지 ... 그 방향조차 모르겠습니다. ㅜㅜ</div> <div><br></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;">전체적인 프로그램 흐름도</span></div> <div>1-1. 사용자 요청 -> 내부 DB에 해당 데이터 존재여부 체크 -> 존재할 경우 표시해줌</div> <div>1-2. <span style="font-size:9pt;line-height:1.5;">사용자 요청 -> 내부 DB에 해당 데이터 존재여부 체크 -> 존재하지 않을 경우 외부 api에 요청하여 데이터를 받아옮</span></div> <div>1-2-1. 받아온 데이터를 DB에 저장함.</div> <div>1-2-2. DB에 저장한 내용을 사용자에게 표시해줌.</div> <div><br></div> <div><br></div> <div>현재 외부 api를 받아오는 과정 - 사용 언어 PHP CURL</div> <div>1. 외부 api 요청</div> <div>2. 받아온 데이터 검사</div> <div>2-1. curl_errno 로 에러 번호가 존재하는지 체크</div> <div>2-2. curl_getinfo 로 http_code가 200인지 체크</div> <div>2-3. curl_exec로 받은 데이터에서 문제가 있는지 체크</div> <div>3. 데이터 검사 결과</div> <div>3-1. 에러 검출 시 1번부터 다시 시작</div> <div>3-2. 검사 통과시 curl_exec로 받은 데이터를 리턴.</div> <div><br></div> <div><br></div> <div> <div>질문 요약</div> <div>1. 외부 api를 가져와서 DB에 입력하거나 사용자에게 보여줘야함.</div> <div>2. 외부 api가 신뢰할 수 없음. 만약 요청에 실패할 경우 재요청하도록 만드는 중</div> <div>3. 그런데 외부 api가 계속 죽어 있다면 재요청을 무한히 하게 될텐데 어떻게 해야할지?</div> <div>4. 혹은 이러한 문제가 발생할 수 있으니 외부 api를 받아오는 절차 자체를 다시 설계해야하는 것인지...</div> <div>5. ajax를 이용하여 데이터를 로딩하는 페이지를 따로 만드는 행위 자체가 매우 위험한 행위인지...</div> <div>6. 방향 혹은 힌트만이라도 주시면... 굽신굽신...</div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.