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;
}
총 회원수를 구해서 %200 한만큼 돌려주면 됩니다
$row = sql_fetch(select count(*) as cnt from g5_member);
$tcount = round($row['cnt'] % 200);
for($i=0;$i<=$tcount){
}
이런식 입니다
답변을 작성하시기 전에 로그인 해주세요.