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

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

QA

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

본문

안녕하세요.

제가 하고자 하는게 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){

}

 

이런식 입니다

 

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

회원로그인

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