테스트 사이트 - 개발 중인 베타 버전입니다

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

경이아빠 4년 전 조회 1,714

안녕하세요?

문자메시지를 홈페이지에 달고 있는데요.

최대 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개

채택된 답변
+20 포인트
4년 전

</p>

<p>$query  = "SELECT * FROM member_table WHERE handphone <>''";</p>

<p>$result = sql_query($query);</p>

<p>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</p>

<p>    if ($i % 1000 == 0)

        $j++;

}</p>

<p>/////////////////////////////////// 문자 발송하기 start

try {

    $cnt = count($Messages);

    for ($j = 0; $j < $cnt; $j++) {

        $receiptNum = $MessagingService->SendXMS($testCorpNum, '', '', '', $Messages[$j], $reserveDT);

        sleep(1);

    }    

}

/////////////////////////////////// 문자 발송하기 start</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

경이아빠
4년 전
감사합니다~~~

댓글을 작성하려면 로그인이 필요합니다.

회원아이디를 통계를 내어 봐서,

a로 시작하는 회원만 보내고

다음에는 b로 시작하는 회원만 보내고

이런 식으로 하면 되지 않을까요?

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

안뇽하세용

쿼리문에 count(*) as cnt 를 추가해주시고 while 문보다는 for문으로

cnt 기준으로 천명위일때랑 아래일때랑 그이상일때랑 조건을 주셔서 하면될것같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인