영카트 상품주문시 복수의 문자 발송에 문제가 있습니다.

영카트 상품주문시 복수의 문자 발송에 문제가 있습니다.

QA

영카트 상품주문시 복수의 문자 발송에 문제가 있습니다.

본문

제 지식과 지혜가 부족해 sir의 고수님들께 도움을 요청드립니다!

shop/orderformupdate.php 778줄

// SMS 모듈 클래스 생성
if($port_setting !== false) {
    $SMS = new LMS;
    $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
    
    for($s=0; $s<count($sms_messages); $s++) {
        $strDest     = array();
        $strDest[]   = $sms_messages[$s]['recv'];
        $strCallBack = $sms_messages[$s]['send'];
        $strCaller   = iconv_euckr(trim($default['de_admin_company_name']));
        $strSubject  = '';
        $strURL      = '';
        $strData     = iconv_euckr($sms_messages[$s]['cont']);
        $strDate     = '';
        $nCount      = count($strDest);
        $res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
        $SMS->Send();
        $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
    }
}


위의 코드에서 반복문 Send(); 함수가, 첫 문자 발송시에 단 한 번만 실행되는 문제가 있는 것 같습니다.


테스트 환경
호스팅 : 카페24

icode 연결 : 모두 정상
문자 발송 설정 :
 - 첫번째 - 주문시 감사
 - 두번째 - 주문시 관리자에게 알림
 - 세번째 - 무통장 주문시 계좌번호 안내
영카트 버전 : 5.4.2.8
SMS 관련 영카트 소스코드 수정 없음.

증상 
무통장입금으로 주문시에 아래의 문자가 모두 발송이 되어야합니다.

1번째 - 감사 문자
2번째 - 관리자에게 주문 알림
3번째 - 무통장입금 계좌안내 문자


- 반복문은 예상대로 반복 index 0 ~ 2까지 총 3회 정상 반복합니다.
- 반복문 각 회차에서 문자 발송에 필요한 모든 데이터를 화면에 찍으면 모든 데이터가 정상입니다.

- [1번째 - 감사 문자] 가 정상적으로 발송되고 그 이후 반복문 돌 때에는 문자 발송이 되지 않습니다.
- 1번째 반복문을 그냥 넘기도록 최상단에서 continue; 를 해놓으면 [2번째 - 관리자에게 주문 알림] 문자 하나만 정상 발송됩니다.

- 2번째 반복문 까지 그냥 넘기도록 최상단에서 continue; 를 해놓으면 [3번째 - 무통장입금 계좌안내 문자] 문자 하나만 정상 발송됩니다.


$SMS->Send(); 이 후의 라인에서 $SMS를 프린트해보면
정상 발송되는 회차에서 $SMS->Result; 에는 값이 있으나, 정상발송이 되지 않는 회차의 반복에서는 $SMS->Result; 에 값이 없습니다.


아마도
문자 발송될 때 첫 1번째 반복될 때 $SMS->Send(); 가 실행되어 문자 발송이 잘 되는 것 같습니다만, 첫 회차에서 $SMS->Init(); 으로 $SMS->Result 와 $SMS->Data 값이 비워진 이후의 회차 부터는 어떤 문제로 인해 $SMS->Send(); 함수가 정상적으로 작동되지 않는 것 같습니다.

그래서
아래의 소스코드 처럼, LMS 객체를 반복문에 넣어 매번 새로 객체를 생성하도록 new LMS; 코드를 반복문 내부로 넣었더니 모든 문자가 정상적으로 발송됩니다.



// SMS 모듈 클래스 생성
if($port_setting !== false) {
    for($s=0; $s<count($sms_messages); $s++) {
    $SMS = new LMS;
    $SMS->SMS_con($config['cf_icode_server_ip'], $config['cf_icode_id'], $config['cf_icode_pw'], $port_setting);
        $strDest     = array();
        $strDest[]   = $sms_messages[$s]['recv'];
        $strCallBack = $sms_messages[$s]['send'];
        $strCaller   = iconv_euckr(trim($default['de_admin_company_name']));
        $strSubject  = '';
        $strURL      = '';
        $strData     = iconv_euckr($sms_messages[$s]['cont']);
        $strDate     = '';
        $nCount      = count($strDest);
 
        $res = $SMS->Add($strDest, $strCallBack, $strCaller, $strSubject, $strURL, $strData, $strDate, $nCount);
 
        $SMS->Send();
        $SMS->Init(); // 보관하고 있던 결과값을 지웁니다.
    }
}


왜 이런 문제가 발생한 건지 알 수 있을까요?
부탁드립니다! 감사합니다!
 

이 질문에 댓글 쓰기 :

답변 1

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

회원로그인

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