테스트 사이트 - 개발 중인 베타 버전입니다

post로 내용을 submit 할때 관련 내용 입니다. 채택완료

59xk 9년 전 조회 4,223

영카트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 에 소스를 보시면 아시겠지만

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

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

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

감사합니다 읽어 주셔서!

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
그림자밟기

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

http://sir.kr/g5_tip/3835">http://sir.kr/g5_tip/3835 

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

5
59xk
9년 전
아실것같지만
아마도 해당 페이지에서

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

[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번을 추천드리겠습니다...

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인