내 워크 플로우를 작동하지 꽤 간단하다PHP : 싶으면 clearstatcache()
- 은 내가
clearstatcache()
은 내가 전화- 새 파일을 저장 전화
- 파일을 삭제
clearstatcache()
아직 끝나면 is_file()
은 잠시 동안 false
을 반환하고을 반환하기로 결정했습니다.예를 들어 10 초 후에 새로 고침합니다.
캐시 문제처럼 보입니까? 그렇습니다.
여기 내 코드의 일부입니다 :
// step 1
$path = 'file_to_delete.jpg';
unlink($path);
// is_file($path) returns false here -- normal behavior
// step 2
clearstatcache();
// step 3 -- some stuff going on on an uploaded image, that leads to:
imagejpeg($imagetosave, $path, 80);
// step 4
clearstatcache();
// is_file() returns false, i have to wait a couple of seconds before it starts returning true
여러분의 도움에 감사드립니다!
편집 :
내가 가진 모든 해답을 감안할 때, 문제가되지 이가 clearstatcache()
에서 온 것처럼 보인다.
하지만 파일을 덮어 쓸 때 (따라서 기존 상태가 변경되지 않음) is_file()
이 좋은 결과를 반환합니다. 그러나 기존 상태가 실제로 변경되면 문제가 발생합니다. 오류가 clearstatcache()
에서 오지 않았다면 이상 할 것입니다. 맞습니까? (또는이 캐시와 관련이있는 것)
첫 번째 단계 이전 위치에서 'is_file()'이 true를 반환합니까? 우리가 실행할 수있는 완전한 샘플을 제공하고 그 문제가 발생하는지 확인하십시오. – zerkms
그 이유는 확실하지 않지만'unstlink'가 자동으로 캐시를 지우므로'clearstatcache'에 대한 첫 번째 호출은 쓸모가 없습니다. – nico
제 생각 엔 당신은 어딘가에 프로그래밍 오류가 있습니다. 문제를 일으키기 위해 스크립트를 최소한으로 단순화하여 디버그에 도움을줍니다. – goat