같은 간단한 코드를 감안할 때 :PHP 올바른 명령 실행을 보장하는 방법을 순서
$file = 'hugefile.jpg';
$bckp_file = 'hugeimage-backup.jpg';
// here comes some manipulation on $bckp_file.
가정 된 문제는 파일이 크거나 큰 경우이다 - let's은 JPG 말 - 하나는 있다고 생각 서버를 복사하는 데 시간이 걸릴 것입니다. (몇 밀리 초를 의미하는 시간에) - 다음 줄의 실행이 훨씬 빠르다고 가정합니다. 그래서 이론상 - "아니오"로 끝낼 수 있습니다. 그러한 파일 또는 디렉토리 "오류가 발생했습니다. - 또는 악화 - TRUNCATED 파일을 조작하기 시작합니다.
내 질문에 어떻게 $ bckp_file이 생성되었거나 (이 경우 -copied) 성공적으로 NEXT 행을 조작하기 전에 확신 할 수 있는가?
파일 만들기/복사가 완료 될 때까지 "일시 중지", "지연"할 수있는 옵션은 무엇입니까? 지금 난 단지 나만을 경고하지만
또는
if (copy($file, $bckp_file)) {
// move the manipulation to here ..
}
(PHP는 오류가있는 같이 동일) 아무것도 해결되지 것이다
if (!copy($file, $bckp_file)) {
echo "failed to copy $file...\n";
}
같은 것을 생각할 수
그러나 이것은 또한 그렇게 유효하지 않습니다 - 왜냐하면 사본이 실행되지 않았다고 말하기 때문에 - 저는 목표를 달성하지 않고 오류없이 루프에서 벗어날 것입니다.
문제가 있거나 너무 과장되어 있습니까? 또는 PHP는 bulit-in 메커니즘을 가지고 있습니다. 권장 관행은 무엇입니까? 문제에 대한 의견이 있으십니까? ??
답해 주셔서 감사합니다. 질문의 범위를 벗어나는 것은 없습니다. 더 많은 것을 배우고 더 많은 것을 이해하려고하기 때문에 :-).질문에 언급 된 다른 한 가지 문제, 즉 TRUNCATED 파일의 경우는 무엇입니까? php-synchronous-mechanisem도 무결성을 검사합니까? 다시 이론적으로 - .jpg 파일을 만들고 저장/복사 할 수 있지만 허위 정보가 포함되어 있습니다. (우리 모두는 그물에서 반투명 jpg를 보았습니다.) –
비동기 IO에 관한 약간의 정보를 포함하도록 내 대답이 업데이트되었습니다 :) – Corbin