
SplFileObject::flock을 사용하는 이유는 파일에 동시 접근을 제어하기 위함입니다. 여러 프로세스나 스레드가 동일한 파일에 접근할 때, 데이터의 일관성을 유지하기 위해 파일 잠금이 필요합니다.
SplFileObject::flock의 LOCK_EX, LOCK_SH, LOCK_UN에 대한 설명은 다음과 같습니다:
- LOCK_EX: 파일을 읽기/쓰기 잠금합니다. 다른 프로세스나 스레드가 파일에 접근할 수 없습니다.
- LOCK_SH: 파일을 읽기 잠금합니다. 다른 프로세스나 스레드가 파일을 읽을 수 있지만, 파일을 쓰기에는 잠금이 걸립니다.
- LOCK_UN: 파일 잠금을 해제합니다.
SplFileObject::flock을 사용하는 예제는 다음과 같습니다:
#hostingforum.kr
php
$file = new SplFileObject('example.txt', 'w');
$file->flock(SplFileObject::LOCK_EX);
$file->fwrite('Hello, World!');
$file->flock(SplFileObject::LOCK_UN);
이 예제에서는 'example.txt' 파일을 쓰기 모드로 열고, LOCK_EX를 사용하여 파일을 읽기/쓰기 잠금합니다. 'Hello, World!'를 파일에 쓰고, LOCK_UN을 사용하여 파일 잠금을 해제합니다.
또한, 파일을 읽기 모드로 열고, LOCK_SH를 사용하여 파일을 읽기 잠금하는 예제는 다음과 같습니다:
#hostingforum.kr
php
$file = new SplFileObject('example.txt', 'r');
$file->flock(SplFileObject::LOCK_SH);
echo $file->fgets();
$file->flock(SplFileObject::LOCK_UN);
이 예제에서는 'example.txt' 파일을 읽기 모드로 열고, LOCK_SH를 사용하여 파일을 읽기 잠금합니다. 파일의 첫 줄을 읽고, LOCK_UN을 사용하여 파일 잠금을 해제합니다.
2025-07-23 10:08