extend 자동실행 중복 관련

extend 자동실행 중복 관련

QA

extend 자동실행 중복 관련

답변 3

그누보드5(영카트) 버전

5.4.5.5

사용 PHP 버전

7.4

본문

안녕하세요

YoungCart Version 5.4.5.5.1

사용중입니다.

 

extend 폴더 하위에 .php파일이 자동실행되고 있는데

 

1년정도 중복없이 실행되다가 이번달에 처음으로 sql insert 가 2번 실행된 것을 확인하였습니다.

 

insert time도 초까지 동일하게 찍힌 상황입니다.

   2025-05-14 00:12:32

   2025-05-14 00:12:32

 

extend 자동실행이 중복으로도 실행될수 있나요?

 

현재는 중복방지 코드로 먼저 insert 된게 있는지 $sql_2에서 $chk가 true이면 넘어가도록 했는데

똑같은 시간에 중복실행된 경우라면 서로 false인 상태라

동시 insert는 어떻게 방지할 수 있을까요?

 

$sql_1 = " select * from my_table_1 where my_condition_1 < 999  ";
$rs = sql_query($sql_1);

 

while($row = sql_fetch_array($rs)) {
        
    $sql_2 = " select my_data from my_table_2 where my_condition_2 = '등록' ";
    
    $chk = sql_fetch($sql_2);
    if($chk['my_data']) {
        continue;
    }

    insert_function();
}

이 질문에 댓글 쓰기 :

답변 3

이런 유형은 프로그램 레벨에서 중복처리를 하면 동시성 처리에서 실패해 중복 처리될 가능성이 많습니다.
DB 레벨에서 Primary Key 또는 Unique Key 를 설정하고 UPSERT 형태로 구성하면

https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
설정한 Key 기반의 데이터에 대해 유일성을 보장하면서 소스도 간결해집니다.

동시접속자가 많아지면 중복으로 처리될수 있습니다.

모든 페이지에서 실행되는거라서 경우에 따라서 중복이 될 수도 있을수 있을거 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 17,518
© SIRSOFT
현재 페이지 제일 처음으로