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

curl로 데이터 넘길때 데이터의 갯수를 나눠서 넘기는 방법 채택완료

kujira 3년 전 조회 1,574

안녕하세요.

제가 하고자 하는게 curl로 api를 호출할때 데이터에 회원 목록 select 해온것을 담아 넘기려고 하는데요

</p>

<p>select * from g5_member where kind = 5 and part_cnt = 1;</p>

<p> </p>

<p>for($i=0; $row=mssql_fetch_array($rst); ++$i){</p>

<p>  $partnerId = $row['mem_no'];</p>

<p>  $rank_code = 0;</p>

<p>  $period = $row['calc_dates'];

  $period = substr($period, 0, 7);</p>

<p> </p>

<p>  $status_class[] = '{"partnerId":'.$partnerId.',"rank":'.$rank_code.',"period":"'.$period.'"}';</p>

<p>}</p>

<p>$status_class_arr = implode(',',$status_class);</p>

<p> </p>

<p>$key = 'a1b2c3d4';</p>

<p>function calcSignature($data){

  global $key;

  return  base64_encode(hash_hmac('sha256', $data, $key, true));

}

$param = '{

    "action": "test",    </p>

<p>    "data": ['.$status_class_arr.']</p>

<p>}';</p>

<p> </p>

<p>$curl = curl_init();

curl_setopt_array($curl, array(

  CURLOPT_URL => 'https:abc.com/api/',

  CURLOPT_RETURNTRANSFER => true,

  CURLOPT_ENCODING => '',

  CURLOPT_MAXREDIRS => 10,

  CURLOPT_TIMEOUT => 0,

  CURLOPT_FOLLOWLOCATION => true,

  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,

  CURLOPT_CUSTOMREQUEST => 'POST',

  CURLOPT_POSTFIELDS =>$param,

  CURLOPT_HTTPHEADER => array(

    'X-SIGNATURE: '. calcSignature($param)

  ),

));</p>

<p>$response = curl_exec($curl);</p>

<p>curl_close($curl);

echo $response;</p>

<p>

 

이렇게 데이터를 보내는데요 문제는 data에 배열로 입력해서 넣을수 있는 갯수가 200개 내외로 한정되어 

있습니다. 

select * from g5_member where kind = 5 and part_cnt = 1;

이렇게 select 하면 회원수가 6000명 가량 되는데요...이걸 어떻게 200명씩 끊어서 전송을 해야될지 모르겠네요;;;;

API 호출에 성공하면 "status": "Ok" << 이 값을 리턴받습니다.

200개를 넘기고 Ok를 받으면 다음 201~400번 보내고 이런식으로 해야 될 것 같긴한데 감이 안잡히네요;;;

 

 

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

답변 2개

채택된 답변
+20 포인트

반복문으로 쪼개서 호출하시면 됩니다

</p>

<p>for($i=0;$i<=30){</p>

<p>if($i ==0) $start = 0;</p>

<p>else        $start = ($i * 200) + 1;</p>

<pre>
<code>select * from g5_member where kind = 5 and part_cnt = 1 limit $start , 200;</code></pre>

<p>}</p>

<p>

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

답변에 대한 댓글 1개

k
kujira
3년 전
감사합니다. 한가지 더 질문이 있는데요....회원수가 현재는 6천명가량 되지만 계속 늘어나는데 $i<=30 으로 돌리면 30번만 전송이 되잖아요? 이걸 제한없이 회원수의 수 만큼 200개씩 반복으로 호출되게 하려면 저길 어떻게 바꾸면 될까요?

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

총 회원수를 구해서 %200 한만큼 돌려주면 됩니다

$row = sql_fetch(select count(*) as cnt from g5_member);

$tcount = round($row['cnt'] % 200);

 

 

for($i=0;$i<=$tcount){

}

 

이런식 입니다

 

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

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

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

로그인