때때로 파일 쓰기 작업을 수행할 때와 같이 PHP 스크립트에 스레드 안전 보장이 필요할 수 있습니다. 이 문서에서는 파일 잠금 기능과 사용 예를 제공합니다. 파일 잠금 기능을 사용하면 스크립트 실행 시 동기화 오류를 방지하기 위해 독점적인 처리 공간을 확보할 수도 있습니다.
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){
@fclose($fp);
@fclose($fp);
@unlink($tmpFileStr.".lock");
}
?>
$tmpFileStr = "/tmp/mylock.loc";
// 작업 권한을 받을 때까지 기다립니다. 즉시 반환하려면 두 번째 매개변수를 false로 설정하세요.
$lockhandle = lock_thisfile($tmpFileStr,true);
if($lockhandle){
// 배타적인 처리가 필요한 모든 트랜잭션이 여기서 수행됩니다.
// ... ...
// 거래가 완료되었습니다.
Unlock_thisfile($lockhandle,$tmpFileStr);
}
?>