라이브러리

[PHP] flock - 휴대용 자문 파일 잠금




PHP flock 함수란?

PHP flock 함수는 파일에 대한 읽기/쓰기 잠금을 제공하는 함수입니다. 이 함수를 사용하면, 여러 프로세스나 스레드가 동일한 파일에 접근할 때 충돌을 방지할 수 있습니다.

flock 함수의 사용법

flock 함수는 다음과 같은 형식으로 사용됩니다.

#hostingforum.kr
php

flock($file, $operation)



- `$file` : 잠금을 걸 파일의 핸들입니다.
- `$operation` : 잠금을 걸 방법을 지정합니다.

flock 함수의 오퍼레이션

flock 함수의 `$operation` 파라미터에는 다음과 같은 오퍼레이션이 있습니다.

- `LOCK_SH` : 읽기 잠금을 걸립니다.
- `LOCK_EX` : 쓰기 잠금을 걸립니다.
- `LOCK_UN` : 잠금을 해제합니다.
- `LOCK_NB` : 비블록킹 모드입니다.

예제

다음 예제는 flock 함수를 사용하여 파일에 대한 읽기/쓰기 잠금을 걸어보겠습니다.

#hostingforum.kr
php

// 파일을 열고 핸들을 얻습니다.

$file = fopen('example.txt', 'w+');



// 쓰기 잠금을 걸고 파일에 데이터를 쓰습니다.

flock($file, LOCK_EX);

fwrite($file, 'Hello, World!');

flock($file, LOCK_UN);



// 읽기 잠금을 걸고 파일을 읽습니다.

flock($file, LOCK_SH);

$data = fread($file, filesize('example.txt'));

flock($file, LOCK_UN);



// 파일을 닫습니다.

fclose($file);



// 결과를 출력합니다.

echo $data;



이 예제에서는 `example.txt` 파일에 "Hello, World!"를 쓰고, 읽어옵니다.

비블록킹 모드

flock 함수의 `LOCK_NB` 오퍼레이션을 사용하면, 파일에 대한 잠금을 걸 때 블록킹을 방지할 수 있습니다.

#hostingforum.kr
php

// 파일을 열고 핸들을 얻습니다.

$file = fopen('example.txt', 'w+');



// 쓰기 잠금을 걸고 파일에 데이터를 쓰려고 합니다. 

// 하지만 다른 프로세스가 파일을 열었을 때, 블록킹을 방지합니다.

if (flock($file, LOCK_EX | LOCK_NB)) {

    fwrite($file, 'Hello, World!');

    flock($file, LOCK_UN);

} else {

    echo '파일에 대한 잠금을 얻을 수 없습니다.';

}



// 파일을 닫습니다.

fclose($file);



이 예제에서는 `example.txt` 파일에 대한 쓰기 잠금을 걸려고 합니다. 하지만 다른 프로세스가 파일을 열었을 때, 블록킹을 방지합니다.

결론

PHP flock 함수는 파일에 대한 읽기/쓰기 잠금을 제공하는 함수입니다. 이 함수를 사용하면, 여러 프로세스나 스레드가 동일한 파일에 접근할 때 충돌을 방지할 수 있습니다. 비블록킹 모드도 제공하여, 파일에 대한 잠금을 걸 때 블록킹을 방지할 수 있습니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 546 페이지

검색

게시물 검색