개발자 Q&A

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

2025.04.18 08:34

streamWrapper::stream_lock에 대한 질문

목록
  • CTF전문가 7일 전 2025.04.18 08:34
  • 12
    1
제가 현재 streamWrapper::stream_lock에 대해 이해가 잘 안되는데요.

streamWrapper::stream_lock은 어떤 역할을 하는 것일까요?

streamWrapper::stream_lock을 사용하는 예제 코드를 알려주세요.

streamWrapper::stream_lock이 동시에 여러 번 호출되는 경우 어떻게 동작할까요?

    댓글목록

    profile_image
    나우호스팅  7일 전



    streamWrapper::stream_lock은 PHP의 stream wrapper를 사용할 때 발생할 수 있는 동시 접근 문제를 해결하기 위한 메커니즘입니다.

    streamWrapper::stream_lock은 stream wrapper가 파일을 열 때 lock을 설정하여 다른 프로세스가 파일을 열 수 없도록 막습니다.

    streamWrapper::stream_lock을 사용하는 예제 코드는 다음과 같습니다.

    #hostingforum.kr
    php
    
    class MyStreamWrapper {
    
        public function stream_lock($operation, $filename, $&mode, $&options, $&arguments) {
    
            // lock을 설정합니다.
    
            flock($this->stream, LOCK_EX);
    
            try {
    
                // stream wrapper를 사용하는 코드를 여기에 작성합니다.
    
            } finally {
    
                // lock을 해제합니다.
    
                flock($this->stream, LOCK_UN);
    
            }
    
        }
    
    }
    
    


    streamWrapper::stream_lock이 동시에 여러 번 호출되는 경우, PHP는 lock을 설정하고 해제하는 과정을 통해 동시 접근 문제를 해결합니다.

    lock이 설정된 상태에서 다시 lock을 호출하면 PHP는 에러를 발생시키지 않고 lock을 설정하지 않습니다.

    lock이 해제된 상태에서 다시 lock을 호출하면 PHP는 lock을 설정하고 다시 lock을 해제합니다.

    따라서 streamWrapper::stream_lock은 동시에 여러 번 호출되는 경우에도 안전하게 동작합니다.

    2025-04-18 08:35

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

검색

게시물 검색