회원이 많아서 1000명씩 끈어서 문자 보내려고 합니다.

회원이 많아서 1000명씩 끈어서 문자 보내려고 합니다.

QA

회원이 많아서 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 기준으로 천명위일때랑 아래일때랑 그이상일때랑 조건을 주셔서 하면될것같습니다.

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

회원로그인

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