php 파일 잠금 작성 예제 튜토리얼에 소개되어 있습니다. 이해하지 못하는 친구는 기사의 예제를 참조하여 자세히 알아볼 수 있습니다. b.php를 다음과 같이 수정하세요.
b.php를 다음과 같이 수정하세요.
결론: 파일을 캐싱할 때 관련 잠금을 선택하는 것이 좋습니다. 그렇지 않으면 읽은 데이터가 불완전하거나 데이터가 반복적으로 기록될 수 있습니다. File_get_contents는 잠금을 선택할 수 없는 것 같습니다. 기본적으로 어떤 잠금을 사용하는지 모르겠습니다. 어쨌든 잠금을 해제하여 얻은 출력은 불완전한 데이터와 같습니다. 파일 캐싱을 하고 싶어서 쓰기 잠금이 있는지만 알면 되고, 있으면 데이터베이스만 확인하면 됩니다. 테스트 환경: Linux(Ubuntu 6), PHP 5.1.2, Apache 2 다시 게시: 파일 잠금에는 공유 잠금과 배타적 잠금, 즉 읽기 잠금(LOCK_SH)과 쓰기 잠금(LOCK_EX)의 두 가지 유형이 있습니다. 파일 잠금은 일반적으로 다음과 같이 사용됩니다.
파일이 업데이트되기 전에 fwrite와 fclose를 기다리는 대신 fwrite 후에는 파일이 즉시 업데이트됩니다. 이는 fwrite 이후 fclose 이전에 파일을 읽어 확인할 수 있습니다. 그러나 언제 lock_ex를 사용하고 언제 lock_sh를 사용합니까? 1. 읽을 때: 더티 데이터가 표시되는 것을 원하지 않으면 lock_sh 공유 잠금을 사용하는 것이 가장 좋습니다. 다음 세 가지 상황을 고려할 수 있습니다. 1. 읽을 때 공유 잠금이 추가되지 않은 경우 다른 프로그램에서 쓰기를 원하면(쓰기 잠금 여부에 관계없이) 쓰기가 즉시 성공합니다. 정확히 절반을 다른 프로그램에서 읽고 쓴 경우, 읽은 내용의 후반부가 전반부와 일치하지 않을 수 있습니다(전반은 수정 전, 후반은 수정 후). 2. 읽을 때 공유 잠금을 추가하면(읽기만 하기 때문에 배타적 잠금을 사용할 필요가 없음) 이때 다른 프로그램이 쓰기 시작하고 쓰기 프로그램은 잠금을 사용하지 않습니다. 프로그램을 작성하면 파일이 직접 수정되므로 이전과 같은 문제가 발생합니다. 3. 가장 이상적인 상황은 읽을 때 잠금(lock_sh)하고 쓸 때 잠금(lock_ex)하는 것입니다. 이렇게 하면 쓰기 프로그램이 읽기 프로그램이 완료될 때까지 기다렸다가 작동하므로 성급한 작업이 발생하지 않습니다. > 두 번째, 글을 쓸 때: 여러 쓰기 프로그램이 잠금 없이 동시에 파일에서 작동하는 경우 최종 데이터의 일부는 프로그램 a에 의해, 일부는 프로그램 b에 의해 기록될 수 있습니다. 쓸 때 잠겨 있는데 이때 다른 프로그램이 읽으러 오면 무엇을 읽게 될까요? 1. 읽기 프로그램이 공유 잠금을 적용하지 않으면 더티 데이터를 읽습니다. 예를 들어, 프로그램을 작성할 때 a, b, c 세 부분을 작성해야 합니다. a를 작성한 후, 이때 읽는 내용은 b입니다. 그런 다음 ab를 작성합니다. 이때 읽은 내용은 abc 입니다. 2. 읽기 프로그램이 이전에 공유 잠금을 적용한 경우 읽기 프로그램은 쓰기 프로그램이 abc 쓰기를 완료할 때까지 기다리고 읽기 전에 잠금을 해제합니다.위는 PHP 파일 잠금에 대한 입문 튜토리얼입니다. 비교 분석을 통해 PHP 파일 잠금 사용법을 자세히 설명합니다. |