2010-12-20 1 views
-1

PHP에서 다음과 같은 함수가 있다고 가정합니다.하나의 세션은 다른 세션이 함수에 들어가기 전에 PHP 함수를 완료해야합니다. 어떻게?

function post_data() 
{ 

    // Do the job 
} 

이제이 함수는 다른 방문자가 함수를 시작하기 전에 현재 방문자에 대해 먼저 완료해야합니다. 다른 방문자는이 기능을 전달하고 나머지 스크립트 작업을 수행해야합니다. 이 문제를 너무 많이 조사했지만 적절한 대답을 찾을 수 없었습니다. 내가 찾은 것은 flock() PHP 함수를 사용한다는 것이다. 나는 flock()을 시도해 보았지만 나에게 잘 맞았지만 이것에 대한 독립적 인 해결책을 원한다.

그럼 flock()을 사용하지 않고 다른 사람이 함수를 입력하기 전에이 함수를 한 방문자가 잠글 수 있습니까?

답변

2

이와 같은 상황에서 전체 기능을 잠그는 것은 좋지 않습니다. 당신은 기본적으로 귀하의 사이트의 데이터 처리를 일련 번호입니다. 가능한 한 코드를 동기화해야하는 것만 큼 좁힐 필요가 있습니다.

어디 까지나 lock이되는 곳에서 휠을 재발 명하지 않는 것이 가장 좋습니다.

+0

나는 2 명 이상의 방문자가 동시에 cron에 저장된 모든 값을 읽고 해당 기능을 실행할 경우 내 cron 함수를 작성하려고합니다. 그게 내가 처음 방문객을 위해 끝내고 그 기능이 다음 일정 cron 시간까지 실행되어서는 안되는 이유입니다. –

+0

@ Kashif Javed - 당신이하는 일을 정확히 이해하고 있는지 확신 할 수 없습니다. 위에서 인용 한 기능이 실제로 무엇을합니까? 얼마나 시간이 걸려요? 첫 번째 방문자가 아직 그 기능을 수행하는 동안 다른 방문자가 방문하면 어떻게 될 것으로 예상됩니까? 이 기능은 사이트에 대한 모든 요청 또는 특정 하위 집합에만 실행되거나 특정 사용자에 대해서만 실행되거나 누군가 특정 페이지를 방문 할 때만 실행됩니까? –

+0

이 기능은 모든 방문자에게 실행됩니다. 위의 함수는 아무 것도 아니며, 내가 그런 함수를 가지고 있고 한 번에 한 명의 방문자 만 완료해야한다고 가정합니다. 다른 방문자는 일을하는 동안 돌아와야합니다. 이 기능은 어떤 목적 으로든 사용될 수 있습니다. 얼마나 오래 걸리거나해야하는지 상관 없습니다. –

관련 문제