라이브러리
[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 함수는 파일에 대한 읽기/쓰기 잠금을 제공하는 함수입니다. 이 함수를 사용하면, 여러 프로세스나 스레드가 동일한 파일에 접근할 때 충돌을 방지할 수 있습니다. 비블록킹 모드도 제공하여, 파일에 대한 잠금을 걸 때 블록킹을 방지할 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.