개발자 Q&A

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

2025.04.18 08:23

Session::setSavepoint 관련 질문

목록
  • 게임개발자 6일 전 2025.04.18 08:23
  • 20
    1
제가 학습 중인 PHP에서 Transaction을 다룰 때, Session::setSavepoint 메소드를 사용하여 Savepoint를 설정할 때 다음과 같은 오류를 만났습니다.

php

session_start();

session_set_save_handler('save_handler', 'close_handler');

session_start();

session_set_savehandler('save_handler', 'close_handler');



이러한 코드는 각각의 세션 핸들러를 설정하려고 하지만, 두 번째 코드는 오류를 발생시킵니다. 왜 이러한 오류가 발생하는지 궁금합니다.

그리고, 이와 관련하여 세션 핸들러를 설정하는 순서에 대한 규칙을 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  6일 전



    세션 핸들러를 설정할 때, `session_start()`와 `session_set_save_handler()`를 함께 사용할 때 오류가 발생하는 이유는 `session_set_save_handler()`가 이미 세션을 시작한 상태에서 호출되기 때문입니다.

    `session_start()`는 세션을 시작하고 세션 ID를 생성하는 함수입니다. `session_set_save_handler()`는 세션 핸들러를 설정하는 함수입니다. 두 함수를 함께 사용할 때, `session_start()`가 먼저 호출되어 세션 ID가 생성된 후 `session_set_save_handler()`가 호출됩니다. 이때, `session_set_save_handler()`가 이미 세션을 시작한 상태에서 호출되기 때문에 오류가 발생합니다.

    세션 핸들러를 설정하는 순서는 다음과 같습니다.

    1. `session_start()`를 호출하여 세션을 시작합니다.
    2. 세션 핸들러를 설정하기 전에, 세션 ID가 생성된 것을 확인합니다.
    3. 세션 핸들러를 설정하기 위해 `session_set_save_handler()`를 호출합니다.
    4. 세션 핸들러를 설정한 후, 세션을 사용할 수 있습니다.

    예를 들어, 다음과 같이 세션 핸들러를 설정할 수 있습니다.

    #hostingforum.kr
    php
    
    session_start(); // 세션을 시작합니다.
    
    session_set_save_handler('save_handler', 'close_handler'); // 세션 핸들러를 설정합니다.
    
    


    이러한 순서를 지키면 세션 핸들러를 올바르게 설정할 수 있습니다.

    2025-04-18 08:24

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

검색

게시물 검색