>  기사  >  백엔드 개발  >  PHP_php 팁을 사용한 파일 잠금 및 잠금 해제의 예

PHP_php 팁을 사용한 파일 잠금 및 잠금 해제의 예

WBOY
WBOY원래의
2016-05-16 20:25:04769검색

때때로 파일 쓰기 작업을 수행할 때와 같이 PHP 스크립트에 스레드 안전 보장이 필요할 수 있습니다. 이 문서에서는 파일 잠금 기능과 사용 예를 제공합니다. 파일 잠금 기능을 사용하면 스크립트 실행 시 동기화 오류를 방지하기 위해 독점적인 처리 공간을 확보할 수도 있습니다.

코드 복사 코드는 다음과 같습니다.

/**************************************************** *********************
*파일 잠금
*@저자 Zeal Li
*http://www.zeali.net/
*
************************************************** ***********************/
/*
*lock_thisfile: 단독 잠금 획득
*@param $tmpFileStr 공유 잠금 파일로 사용되는 파일 이름(어떤 이름이라도 지정할 수 있음)
*@param $locktype 잠금 유형, 기본값은 false입니다(비차단, 즉 잠금이 실패하면 바로 false를 반환함). true로 설정하면 <🎜를 반환하기 전에 잠금이 성공할 때까지 기다립니다. > *@return 잠금에 성공하면 잠금 인스턴스를 반환하고(unlock_thisfile 메서드를 사용할 때 이 매개변수가 필요함) 잠금에 실패하면 false를 반환합니다.
*/

lock_thisfile 함수($tmpFileStr,$locktype=false){

if($locktype == false)

$locktype = LOCK_EX|LOCK_NB;

$can_write = 0;

$lockfp = @fopen($tmpFileStr.".lock","w");

if($lockfp){

$can_write = @flock($lockfp,$locktype);

}

if($can_write){

$lockfp 반환;

}

그 외{

if($lockfp){

                @fclose($lockfp);

                @unlink($tmpFileStr.".lock");

}

false를 반환합니다.

}

}

/**

*unlock_thisfile: 이전에 획득한 잠금 인스턴스를 잠금 해제합니다
*@param $fp lock_thisfile 메소드의 반환 값
*@param $tmpFileStr 공유 잠금 파일로 사용되는 파일 이름(어떤 이름이라도 지정할 수 있음)
*/
함수 Unlock_thisfile($fp,$tmpFileStr){

@flock($fp,LOCK_UN);

@fclose($fp);

@fclose($fp);

@unlink($tmpFileStr.".lock");

}

?>

코드 복사 코드는 다음과 같습니다.

// 사용예

$tmpFileStr = "/tmp/mylock.loc";
// 작업 권한을 받을 때까지 기다립니다. 즉시 반환하려면 두 번째 매개변수를 false로 설정하세요.
$lockhandle = lock_thisfile($tmpFileStr,true);
if($lockhandle){
// 배타적인 처리가 필요한 모든 트랜잭션이 여기서 수행됩니다.
// ... ...
// 거래가 완료되었습니다.
​ Unlock_thisfile($lockhandle,$tmpFileStr);
}
?>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.