post로 내용을 submit 할때 관련 내용 입니다.

post로 내용을 submit 할때 관련 내용 입니다.

QA

post로 내용을 submit 할때 관련 내용 입니다.

본문

영카트5의 adm\shop_admin\orderlist.php

을 수정 하여 한번에 2000개 이상의 숫자를 한꺼번에 post 방식으로

orderlistupdate.php 로 넘어 가도록 수정 하여 사용 하고 있습니다.

 

자료가 2000건이 되기 전에는 몰랐으면

2000건 이상의 자료가 post 로 넘어가게 되면서 갑자기

400 bad request 에러가 발생하여

이리 저리 찾아 보다 phpinfo로 확인을 해봤더니

"Max Requests Per Child: 2000 - Keep Alive: on - Max Per Connection: 100"

이렇게 되있더군요

지레짐작으로 차일드가 1800건 정도되 되겠금 해서 다시 submit 해 보니 제대로 넘어가네요

 

그래서 질문을 드립니다.

필요한 량은 예상대로라면 Per Child 20000 정도로 하고 싶은데

이것은 호스팅 업체(*afe2*) 에서 서버에 문제가 없는지 물어 봐야 하는 것이 맞겠지요?

(이쪽에는 관련 지식이 없네요...)

혹시 왠만한 호스팅 에서는 어느 정도로 설정하는 것이 적당선인지 질문 드립니다.

 

그리고 또한 그 2000건 이 넘도록 넘어가는 post 데이터 에서

사실 체크되어 실제로 사용되는 부분은

한번에 넘어갈때 10건 정도 밖에는 안되고 나머지는 그저 버려지고 있는데요

그래서 사실 2000까지도 필요가 없는데

사용 되지 않는 부분 때문에 더 많은 max가 필요한데요 

(실제 orderlists.php 에 소스를 보시면 아시겠지만


for ($i=0; $i<count($_POST['chk']); $i++)
{
    // 실제 번호를 넘김
    $k     = $_POST['chk'][$i];
    $od_id = $_POST['od_id'][$k];
이런 식으로 체크가 되어있는 실제 번호만 받고 체크가 되어있지 않는 다른 부분은 모두 버려지는데요
실제로 그 버려지는 것들이 post 로 넘길때 함께 넘어 오는 것이죠

저도 저 방식을 그대로 사용하고 있어서 불필요한 내용(체크되지 않은 항목들)까지 post로 넘기다보니
이런 문제가 발생하는 것 같아요

혹시 post 로 넘길때 체크 된 부분만 post 로 넘기게 하면 max request 에 설정을 건드리지 않아도
충분히 문제가 해결 될것 같은데 묘안이 있으시다면 답변을 부탁드립니다.

감사합니다 읽어 주셔서!

 

 

 

이 질문에 댓글 쓰기 :

답변 2

배열로 체크한 것만 넘겨서 처리하면 됩니다.

http://sir.kr/g5_tip/3835 

 


<form method="post">
<input type="hidden" name="ok" value="ok">
<input type="checkbox" name="aa[]" value="1"> 1<br/>
<input type="checkbox" name="aa[]" value="2"> 2<br/>
<input type="checkbox" name="aa[]" value="3"> 3<br/>
<input type="checkbox" name="aa[]" value="4"> 4<br/>
<input type="checkbox" name="aa[]" value="5"> 5<br/>
<input type="checkbox" name="aa[]" value="6"> 6<br/>
<input type="checkbox" name="aa[]" value="7"> 7<br/>
<input type="checkbox" name="aa[]" value="8"> 8<br/>
<input type="checkbox" name="aa[]" value="9"> 9<br/>
<button>222</button>
</form>
<?php
print_r($_POST[aa]);
?>

아실것같지만
아마도 해당 페이지에서

이미 그렇게 되어 있어요 ㅠㅠ
중요한건 그 부분은 체크가 되었기 때문에 해당 부분만 넘어가는데요

  [chk] => Array
        (
            [0] => 3
            [1] => 7
            [2] => 33
        )

    [od_id] => Array
        (
            [0] => 2016042103190002
            [1] => 2016042100560962
            [9] => 2016042101080019
            [10] => 2016042100560938
            [11] => 2016042101080014
            [12] => 2016042101080011
            [13] => 2016042101080016
            [14] => 2016042100560954
            [15] => 2016042101080008
            [16] => 2016042100560956
            [17] => 2016042100560958
.
.
.
.
.
            [2000] => 예)201600000000
)
    [od_id] => Array
        (
[0]
~
[2000]

        )




위와같이 체크로 설정해놓은 부분  체크박스 밸류를 받아서 번호를 그 밸류로 다시

od_id[체크박스밸류로 받은 번호] <-- 이런식으로 사용 하게끔 되어있습니다.

현재 체크박스로 넘거 온 것이 3,7,33 이니까
$od_id = od_id[3];
(od_id[7])
이런식으로 사용하고 있습니다.


체크를 할수 있는 부분은 그림자밟기님께서 말씀하신대로 체크한 것만 넘어가지만
그 이외에 것들은 모두 그대로 넘어가서 문제가 되고 있는데요..


어찌하는 것이 좋을까요...

1. chk의 값을 유의미한 값으로 주고 orderlistupdate.php 에서 디비를 통해 od_id를 가져오게 처리

   => chk로 넘어온 값으로 od_id를 가져오는 방식

 

2. od_id는 히든으로 처리하지 마시고 POST로 넘길 때 jquery 등으로 생성해주는게 좋을 듯 합니다.

서브밋 할 때 chk로 체크된것만 생성해서 전달하는 방식이지요.

od_id가 필요하다면 자바스크립트 배열로 저장시켜두고 빼쓰면 되겠네요.

 

어떠한 구조에 어떠한 쓰임새인지는 모르겠습니다만, 1번을 추천드리겠습니다...

답변을 작성하시기 전에 로그인 해주세요.
전체 27
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT