파일을 열어 내용을 읽은 후 원래 내용을 기반으로 파일 내용을 일부 출력으로 덮어 쓰는 가장 깨끗한 방법은 무엇입니까? 특히, 항목 목록 (줄 바꿈으로 구분)으로 채워진 파일을 열거 나 목록에 항목을 추가/처리하고 목록에서 가장 오래된 N 항목을 제거한 다음 목록을 파일에 다시 쓰려고합니다.PHP에서 파일 내용을 읽고 덮어 쓰는 가장 좋은 방법은 무엇입니까?
fopen(<path>, 'a+')
flock(<handle>, LOCK_EX)
fread(<handle>, filesize(<path>))
// process contents and remove old entries
fwrite(<handle>, <contents>)
flock(<handle>, LOCK_UN)
fclose(<handle>)
여러 페이지 요청에서 파일을 보호하려면 flock()을 사용하여 파일을 잠글 필요가 있습니다. fopen()이 트릭을 할 때 'w +'플래그가 올까요? PHP 매뉴얼은 파일 길이를 0으로 자르므로 파일의 현재 내용을 읽지 못할 수도 있습니다.
다른 임시 파일에 쓰기를 제안한 다음 첫 번째 파일을 삭제하고 임시 파일의 이름을 바꾸는 것이 좋습니다. – BishopRook
당신은 이것에 대한 해결책을 찾았습니까? 나는 정확하게이 시나리오에 관심이있다. (파일이 잠긴 동안 덮어 쓰기를 읽는다.) – ralbatross