extend 자동실행 중복 관련
본문
안녕하세요
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 기반의 데이터에 대해 유일성을 보장하면서 소스도 간결해집니다.
동시접속자가 많아지면 중복으로 처리될수 있습니다.
모든 페이지에서 실행되는거라서 경우에 따라서 중복이 될 수도 있을수 있을거 같습니다.