symfony 1.4에서 프로세스를 여러 번 실행하지 못하게하는 방법이 필요합니다.symfony 1.4의 프로세스 잠금
다음과 같이 사용자가이 프로세스를 실행하면이 프로세스를 실행하려고하는 다른 사용자에게 프로세스가 실행 중임을 알리는 경고 메시지가 표시됩니다.
데이터베이스를 사용하지 않고 구현할 수 있습니까? 처음에
function lock(){
$file = __DIR__ . '/file.lock';
if(file_exists($file)){
/* exit or whatever you want */
die('ALREADY LOCKED');
}
touch($file);
}
function unlock(){
$file = __DIR__ . '/parser.lock';
if(file_exists($file)){
unlink($file);
}else{
echoln("unlock function: LOCK FILE NOT FOUND");
}
}
function exitHandler(){
echoln('exitHandler function: called');
unlock();
}
사용 lock
기능, register_shutdown_function()
에 exitHandler
기능을 설정 :
당신은 예를 들어'.lock' 파일을 작성하고 확인할 수 있습니다 사용하는 방법
. 현재 사용자가 프로세스를 멈추었을 때'.lock' 파일을 지우는 것을 잊지 마십시오. – j0k
나는 그 해결책을 고려했다. 그러나 사용자가 연결을 끊었거나 서버에 문제가 발생하면 파일은 삭제되지 않습니다. –
하지만 데이터베이스를 사용하지 않으면 어려울 것입니다. 예를 들어, 사용자가 유휴 상태인지 (예를 들어 sfPdoSessionStorage를 사용하여) 너무 오랜 시간이 지난 후 '.lock' 파일을 재설정 할 수 있습니다. – j0k