>  기사  >  백엔드 개발  >  file_put_contents가 파일 배타적 잠금을 발견하면 대기열에 추가되어 대기합니까?

file_put_contents가 파일 배타적 잠금을 발견하면 대기열에 추가되어 대기합니까?

WBOY
WBOY원래의
2016-10-17 09:30:162174검색

file_put_contents('test.txt',$data,FILE_APPEND|LOCK_EX);
위에서 설명한 것처럼 파일에 많은 양의 데이터를 쓰는 경우 파일에 배타적 잠금이 있으므로 후속 file_put_contents에도 데이터를 써야 합니다. , 후속 file_put_contents가 이전 파일 쓰기 작업이 완료될 때까지 기다리는 대기열이 될지 여부

답글 내용:

file_put_contents('test.txt',$data,FILE_APPEND|LOCK_EX);
위에서 설명한 것처럼 파일에 많은 양의 데이터를 쓰는 경우 파일에 배타적 잠금이 있으므로 후속 file_put_contents에도 데이터를 써야 합니다. , 후속 file_put_contents가 이전 파일 쓰기 작업이 완료될 때까지 기다리는 대기열이 될지 여부

예, file_put_contents의 구현은 실제로 fopen, fwrite, fflush 및 fclose 작업 집합의 간단한 구현입니다. LOCK_EX가 추가되면 fopen도 무리를 실행하고 이 코드는 실행을 계속하기 전에 파일 잠금이 해제될 때까지 차단됩니다. 이 대기는 대기열로 정렬됩니다.

또한 지나치게 큰 파일 쓰기는 PHP의 최대 실행 이벤트를 초과할 수 있으며 데이터 손실의 위험이 있으므로 데이터가 중요하다면 직접 대용량 쓰기 대기열을 구현하는 것이 좋습니다.

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