2014-07-14 10 views
2

현재 PHP 스크립트는 한 번만 실행해야합니다. 이미 작동하는 동안 다른 사람이 다시 시작하려고하면 오류 메시지와 함께 두 번째 프로세스가 즉시 종료됩니다.PHP의 잠금 파일

두 번째로 아래 코드를 실행하려고하면 10 초 동안 기다렸다가 오류 메시지를 즉시 인쇄하는 대신 아무 것도 인쇄하지 않습니다. 그게 뭐가 잘못 됐어?

NB : 브라우저에서 스크립트가 실행됩니다. 콘솔에서 모든 수동에서 제대로

<? 
$fh = fopen(__FILE__, 'r'); 
if(! flock($fh, LOCK_EX)){ 
    fclose($fh); 
    die("Operation is already performed"); 
} 
else{ 
    sleep(10); //this is "some operation" stub 
    flock($fh, LOCK_UN); // unlock the file 
    fclose($fh); 
} 

?> 
+0

설명서의 첫 번째 사용자 의견보기 –

+0

'flock'이 파일을 제대로 구현하기위한 스크립트가 아닌 다른 파일 – cmorrissey

답변

2

작동 : "오직 하나의 프로세스가 한 번에 주어진 파일에 대한 단독 잠금을 소유 할 수 있습니다."

어쨌든, 이것은 잠금을 구현하는 나쁜 방법입니다. 예를 들어 파일에 내용을 쓰고 스크립트가 중지되면이를 삭제할 수 있습니다. 이렇게하면 파일이 비어 있는지 확인하여 다른 프로세스가 실행 중인지 확인할 수 있습니다.