회원이 많아서 1000명씩 끈어서 문자 보내려고 합니다.
본문
안녕하세요?
문자메시지를 홈페이지에 달고 있는데요.
최대 1000명까지만 발송이 되더라구여.
그래서 회원이 5000명일때는
1000명씩 5번 끈어서 보내야 하는 상황입니다.
거기다가 1000명 보내면 0.5초 정도는 딜레이를 주고 다음 1000명을 이어서 전송해야
전송실패가 덜할거라는 이야기를 들었습니다.
아래는 인원수에 상관없이 한꺼번에 보내는 로직입니다.
여기에 인원수가 1000명이 넘을 경우에 1000명씩 끈어서 보내는 로직을 추가해야합니다.
고수님의 도움이 절실합니다.
$query = "SELECT * FROM member_table WHERE handphone <>''";
$result = sql_query($query);
while($rows = sql_fetch_array($result)){
/////////////////////////////////// 문자 전송 하기 배열저장 start
$Messages[] = array(
'snd' => $config[cf_1], // 발신번호
'sndnm' => $config[cf_admin_email_name], // 발신자명
'rcv' => $rows[handphone], // 수신번호
'rcvnm' => $rows[name], // 수신자성명
'sjt' => $sms_contents, // 개별전송 메시지 제목
'msg' => $sms_contents // 개별전송 메시지 내용
);
/////////////////////////////////// 문자 전송 하기배열저장 end
}
/////////////////////////////////// 문자 발송하기 start
try {
$receiptNum = $MessagingService->SendXMS($testCorpNum, '', '', '', $Messages, $reserveDT);
}
/////////////////////////////////// 문자 발송하기 start
답변 3
$query = "SELECT * FROM member_table WHERE handphone <>''";
$result = sql_query($query);
for ($i = 1, $j = 0; $rows = sql_fetch_array($result); $i++){
/////////////////////////////////// 문자 전송 하기 배열저장 start
$Messages[$j][] = array(
'snd' => $config['cf_1'], // 발신번호
'sndnm' => $config['cf_admin_email_name'], // 발신자명
'rcv' => $rows['handphone'], // 수신번호
'rcvnm' => $rows['name'], // 수신자성명
'sjt' => $sms_contents, // 개별전송 메시지 제목
'msg' => $sms_contents // 개별전송 메시지 내용
);
/////////////////////////////////// 문자 전송 하기배열저장 end
if ($i % 1000 == 0)
$j++;
}
/////////////////////////////////// 문자 발송하기 start
try {
$cnt = count($Messages);
for ($j = 0; $j < $cnt; $j++) {
$receiptNum = $MessagingService->SendXMS($testCorpNum, '', '', '', $Messages[$j], $reserveDT);
sleep(1);
}
}
/////////////////////////////////// 문자 발송하기 start
쿼리문에 count(*) as cnt 를 추가해주시고 while 문보다는 for문으로
cnt 기준으로 천명위일때랑 아래일때랑 그이상일때랑 조건을 주셔서 하면될것같습니다.
회원아이디를 통계를 내어 봐서,
a로 시작하는 회원만 보내고
다음에는 b로 시작하는 회원만 보내고
이런 식으로 하면 되지 않을까요?