2014-04-05 2 views
2

나는 PHP's website에서 file_put_contents은 원자가 아님을 읽었습니다. 그 파일을 업로드하는 데 사용할 계획이었습니다.PHP에서 move_uploaded_file은 원 자성입니까?

나는 그 다음에도 move_uploaded_file의 원 자성에 대해 궁금해하고 있었지만 어떤 정보도 찾을 수 없었다.

어떤 도움이 필요합니까?

감사합니다.

+0

혼란스러운 질문. 설명서에 원자가 아니라고 말하면서도 기능의 원 자성에 대해 궁금해하십니까? 원자 버전으로 게시 한 동일한 페이지에 대한 의견이 있습니다. –

+0

@AzizSaleh 필자는'file_put_contents'를 참조하고있었습니다. 제 편집을 확인합니다. – think123

+0

실례합니다. 충분한 수면을 취하지 않았습니다. –

답변

3

파일 시스템 수준에서 원자를 의미한다고 가정합니다. 파일 시스템에 따라 다르다. move_uploaded_files으로 발생

과정은 기본적으로 : 이

  • 이 파일이

      을 업로드 할 수 있습니까?
    • 두 개의 문자열이 전달 되었습니까?
    • 소스 파일이 업로드 되었습니까?
    • open_basedir은 대상에 쓸 수 있습니까?

    모두가 예라고 가정하면 rename이 시도됩니다. 대부분의 파일 시스템에서 이름은 원자 적입니다.

    rename이 실패하면 복사 및 삭제가 시도됩니다. 복사에는 읽기가 필요하며 별도의 삭제가 있으므로 이는 원자 적 요소가 아닙니다.

    마지막으로 이름 바꾸기와 복사본이 작동하지 않으면 대신 오류가 생성됩니다.

  • +1

    "파일을 업로드 할 수 있습니까?" ---이게 뭐야? – zerkms