프로그래밍/PHP

PHP - flock 함수

가카리 2013. 11. 29. 20:29
반응형

flock 함수는 파일을 쓰거나 읽을 때, 또는 파일 잠금 해제 등 유닉스나 윈도우에서 작동합니다. 파일 작성중 다른 사용자의 사용의 접근을 차단하여 파일의 깨지는 문제를 예방할 수 있습니다.


bool flock ( resource $handle , int $operation [, int &$wouldblock ] )

 


 

flock 함수는 다음의 상수를 사용할 수 있습니다.


 LOCK_SH

 LOCK_EX

 LOCK_UN

 파일 읽기일 때 잠금

 파일 쓰기일 때 잠금

 파일 잠금 해제

 


사용방법은 다음과 같습니다.


 <?php
 
// 파일 새로 작성시
 
if($fp = @fopen('readme.txt''wb'))
 {
       
// 파일을 먼저 잠금합니다.
       
@flock($fpLOCK_EX);

       
fwrite($fp"새로운 내용을 작성합니다.");

       
// 작업을 마쳤으면 파일 잠금 해제합니다.
       
@flock($fpLOCK_UN;

       
fclose($fp);
 }
 
 
// 파일에 내용 추가시
 
if($fp = @fopen('readme.txt''ab'))
 {
       
// 파일을 먼저 잠금합니다.
       
@flock($fpLOCK_SH);

       
fwrite($fp"새로운 라인을 추가합니다.");

       
// 작업을 마쳤으면 파일 잠금 해제합니다.
       
@flock($fpLOCK_UN;
      
       
fclose($fp);
 }
 ?>

 


 

해당 파일에 접근하는 사용자수가 많다면 파일이 깨지는 경우가 발생하므로 반드시 파일 쓰기 작업일 때는 파일 잠금을 해두는게 좋으며 파일 읽기 일때는 flock 기능 보다는 readfile 함수나 fpassthru 함수를 이용하는 편이 더 효율적일 것입니다.

 

출처 : http://habony.tistory.com/488

반응형