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 포인트
3년 전
반복문으로 쪼개서 호출하시면 됩니다
</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개씩 반복으로 호출되게 하려면 저길 어떻게 바꾸면 될까요?
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인