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

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

QA

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

답변 2

본문

안녕하세요.

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


select * from g5_member where kind = 5 and part_cnt = 1;
 
for($i=0; $row=mssql_fetch_array($rst); ++$i){
  $partnerId = $row['mem_no'];
  $rank_code = 0;
  $period = $row['calc_dates'];
  $period = substr($period, 0, 7);
 
  $status_class[] = '{"partnerId":'.$partnerId.',"rank":'.$rank_code.',"period":"'.$period.'"}';
}
$status_class_arr = implode(',',$status_class);
 
$key = 'a1b2c3d4';
function calcSignature($data){
  global $key;
  return  base64_encode(hash_hmac('sha256', $data, $key, true));
}
$param = '{
    "action": "test",    
    "data": ['.$status_class_arr.']
}';
 
$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)
  ),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

 

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

있습니다. 

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

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

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

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

 

 

이 질문에 댓글 쓰기 :

답변 2

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


for($i=0;$i<=30){
if($i ==0) $start = 0;
else        $start = ($i * 200) + 1;

select * from g5_member where kind = 5 and part_cnt = 1 limit $start , 200;

}

감사합니다. 한가지 더 질문이 있는데요....회원수가 현재는 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){

}

 

이런식 입니다

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #curl ×
전체 97
© SIRSOFT
현재 페이지 제일 처음으로