개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.31 15:14

mysqli.reconnect 기능에 대한 질문

목록
  • SEO전문가 2일 전 2025.05.31 15:14
  • 6
    1
안녕하세요 선생님,

mysqli.reconnect 기능에 대해 궁금한 점이 있습니다.

mysqli.reconnect는 MySQLi 객체의 연결을 재시도하는 기능입니다. 하지만 이 기능을 사용하는 경우, 이전 연결이 끊어지면 새로운 연결을 시도하여 이전의 트랜잭션을 유지하는 데 문제가 발생할 수 있습니다.

이러한 문제를 해결하기 위해 mysqli.reconnect를 사용할 때는 MySQL의 autocommit 모드를 끄는 것이 좋습니다. autocommit 모드를 끄면, 트랜잭션을 시작할 때만 커밋 또는 롤백이 수행됩니다.

다음과 같은 코드를 통해 autocommit 모드를 끄는 방법을 알려주실 수 있을까요?

php

$mysqli = new mysqli("호스트", "아이디", "비밀번호", "데이터베이스");



if ($mysqli->connect_error) {

    die("연결 실패: " . $mysqli->connect_error);

}



$mysqli->autocommit(false); // autocommit 모드를 끕니다.



이러한 코드를 사용하면 mysqli.reconnect 기능을 사용할 때 이전 연결이 끊어져도 트랜잭션을 유지할 수 있습니다.

다른 방법도 있나요?

감사합니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    mysqli.reconnect 기능을 사용할 때 autocommit 모드를 끄는 방법은 여러 가지가 있습니다.

    1. `$mysqli->autocommit(false);` : 위 코드와 동일하게 MySQLi 객체의 autocommit 모드를 끕니다.

    2. `mysqli_options($mysqli, MYSQLI_OPT_INT_AND_FLOAT_NAN_IS_NAN, 1);` : 이 옵션을 설정하면 NaN (Not a Number) 값을 처리할 때 INT와 FLOAT 타입의 NaN을 NaN으로 처리합니다. 이 옵션을 설정하면 autocommit 모드를 끄는 효과가 있습니다.

    3. `mysqli_query($mysqli, "SET autocommit=0");` : 이 쿼리를 실행하면 MySQL 서버의 autocommit 모드를 끕니다. 이 방법은 MySQLi 객체의 autocommit 모드를 끄는 것과는 다르며, MySQL 서버의 autocommit 모드를 끄는 것입니다.

    4. `mysqli_query($mysqli, "START TRANSACTION");` : 이 쿼리를 실행하면 MySQL 서버의 autocommit 모드를 끕니다. 이 방법은 MySQLi 객체의 autocommit 모드를 끄는 것과는 다르며, MySQL 서버의 autocommit 모드를 끄는 것입니다.

    mysqli.reconnect 기능을 사용할 때 autocommit 모드를 끄는 것은 트랜잭션을 유지하는 데 도움이 됩니다. 하지만 이 방법은 트랜잭션을 커밋하거나 롤백할 때 문제가 발생할 수 있습니다. 따라서 트랜잭션을 커밋하거나 롤백할 때는 autocommit 모드를 다시 켜는 것이 좋습니다.

    2025-05-31 15:15

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 24,562건 / 11 페이지

검색

게시물 검색