이 글은 관심있는 친구들이 참고하시면 좋을 것 같습니다.
이 문서의 예에서는 PHP가 Flock을 사용하여 파일 잠금을 구현하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다:
공식 문서에서 flock의 설명은 다음과 같습니다: Flock()을 사용하면 모든 플랫폼(대부분의 Unix 파생 제품 및 Windows 포함)에서 사용할 수 있는 간단한 읽기/쓰기 모델을 구현할 수 있습니다. 잠금이 차단되면(EWOULDBLOCK 오류 코드의 경우) 선택적 세 번째 매개변수를 TRUE로 설정합니다. 잠금 작업은 fclose()에 의해 해제될 수도 있습니다(코드 실행이 완료되면 자동으로 호출되기도 함).
간단히 말하면, 여러 프로세스가 파일에 접근하는 것을 제한하여 충돌을 방지하도록 파일을 잠그는 것입니다. 예:
<?php $file = fopen("test.txt","w+"); if (flock($file,LOCK_EX)) { fwrite($file,"Write something"); flock($file,LOCK_UN); } else { echo "Error locking file!"; } fclose($file); ?>
설명:
1 이 코드의 의미는 test.txt 파일을 읽기 및 쓰기 모드로 여는 것입니다. 사용자가 php 페이지를 호출하면 test.txt 파일이 실행됩니다. ($file,LOCK_EX) 코드가 실행되어 test.txt 파일을 독점적으로 잠급니다(파일은 이 사용자만 읽고 쓸 수 있습니다). 그런 다음 다른 신규 사용자가 파일에 액세스하려고 하면 차단됩니다. 전자가 파일을 닫을 때까지(잠금 해제).
2. 코드를 Flock($file,LOCK_EX+LOCK_NB)으로 변경하면 잠금 시 바로 오류가 반환된다는 의미입니다. 그러다가 새로운 사용자가 파일에 접근하면 "파일 잠금 중 오류가 발생했습니다!"가 출력됩니다.
3. 이 함수 구문은 Flock(file,lock,block)이며, 여기서는 file이 필요합니다. 열려 있는 파일을 잠그거나 해제하도록 지정합니다. 잠금이 필요합니다. 사용할 잠금 유형을 지정합니다. 블록은 선택 사항입니다. 1 또는 true로 설정하면 잠그는 동안 다른 프로세스를 차단합니다.
예: 여러 프로세스가 동시에 동일한 파일을 성공적으로 쓸 수 있도록 PHP 코드를 작성하세요
function writeData($path, $mode,$data) { $fp = fopen($path, $mode); $retries = 0; $max_retries = 100; do{ if ($retries > 0) { usleep(rand(1, 10000)); } $retries += 1; }while (!flock($fp, LOCK_EX) and $retries<= $max_retries); if ($retries == $max_retries) { return false; } fwrite($fp, "$data\n"); flock($fp, LOCK_UN); fclose($fp); return true; }
요약:위는 이 기사의 전체 내용입니다. 도움이 되기를 바랍니다. 모두의 배움에.
관련 권장 사항:
php 코드 및 도구 클래스를 사용하여 웹 페이지 캐싱 구현
php는 모든 백그라운드 함수 호출을 제어하는 ajax 기반
위 내용은 PHPflock 파일 잠금을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!