Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

혼자서 앱 만드는 개발자 함께하는 AI 세상

그리드(GRID)에서 액셀 데이터 업로드 처리 본문

시트메타 백엔드 노코드 플랫폼 시스템

그리드(GRID)에서 액셀 데이터 업로드 처리

혼앱사 2023. 1. 7. 16:55
반응형
  • 대용량 데이터를 PHP를 통해서 서버로 업로드시 고려할것이 많다. 서버쪽에서 PHP에 한꺼번에 데이터를 보내면 서버 환경에 따라. 용량이나 메모리문제로 데이터 처리에 문제가 생길수있다.
  • 그리고 데이터를 올릴때 제대로 올라갔는지 확인 하기 위해서 검증작업을 해야하는데 이럴때 문제가 발생 할 수있다.
  • 일단 천건으로 처리를 테스트 했지만 오천건 이상되는건 카페24 PHP 서버(당연 최소사양) 한번에 날리면 문제가 발생한다. AJAX기반으로 비동기방식으로 데이터를 쏘기 때문에 문제가 한번에 트래픽이 발생하여 데이터 업로드를 보장하기 힘들다. 그래서 0.5 빈도로 데이터를 건별로 발송해서 올리는 로직으로 처리했다. 이럴경우 데이터가 올라가는것을 눈으로 확인 할 수 있어서 좀더 명확해진다.
  • 올라간 데이터건수를 화면에서 프로그래스 바 로 처리 할 수 있다는 것이 좋타.
  • 관련 소스 (settimeout 을 통해서 순차적으로 0.5초간격으로 보낸다.) 이때 index*500 밀리세컨드(1초가 천밀리 세컨드) 순번으로 해주면 된다.
function uploadSelectData(){
      var arr = firstGrid.getList("selected");
      /*그리드에 선택된 데이터 가져와서 FOR EACH 문을 통해 데이터를 업로드 한다.*/
     if(arr.length == 0) {
           alert("업로드할 데이터를 선택해주세요");
           return;
       } else {
            if(confirm(arr.length+"건을 업로드 합니다.")){
                    console.log( firstGrid.getList());
                       var count =1;
                       $.each(arr, function (index, item) {
                               setTimeout(() => {
                                    $.ajax({
                                   type: "POST",
                                   url: "./sheetmateDao.php?tableName=saveSheet&site=<?echo $msiteName ?>&MENU_ID=<?echo $MENU_ID ?>",
                                   scriptCharset: "utf-8" ,
                                    contentType: "application/x-www-form-urlencoded; charset=UTF-8", 
                                   //폼 데이터
                                   data:  item ,
                                 //  async: false,
                                   //응답 데이터 포맷
                                   dataType:"json",
                                   //성공시
                                   success: function(obj) {	
                                       console.log(index);
                                       $("#updateCount").val(count++);
                                   },
                                   error: function(request, status, error) {
                                      $("#err_log").val("error:"+request.responseText);
                                   }
                              });
                                   console.log("this is the "+index+" message")
                            }, 500*index);
                   });
            }
       }
    //if(arr.length ==0)	 arr =  firstGrid.getList();
 	}

 

  • 그리드에 올라온 데이터를 올라간 건수를  input box 보여준다.

  • 올라가는 데이터를 콘솔창에 찍어서 보여준다.

728x90
반응형
Comments