문제

여러 동시 사용자를 처리하는 PHP / MySQL 응용 프로그램을 개발 중입니다. 나는 현재보고 / 편집중인 레코드에 대한 잠금 / 경고와 관련하여 취할 최선의 방법을 생각하고 있습니다.

피해야 할 시나리오는 레코드를보고있는 두 사용자, 한 명은 변경을하고 다른 하나는 마찬가지로 수행하는 것입니다. 하나의 변경이 이전을 덮어 쓸 수 있습니다.

최신 버전의 WordPress에서 그들은 이것을 감지하기 위해 어떤 방법을 사용하지만, 적어도 내 경험에 따라 전체적으로 신뢰할 수있는 것처럼 보이지 않습니다.

응용 프로그램을 '핑'하기 위해 어떤 형태의 Ajax가 제자리에 있어야한다고 가정하고 레코드가 여전히보고 / 편집되고 있음을 알려줍니다 (그렇지 않으면 사용자는 단순히 브라우저 창을 닫을 수 있으며 응용 프로그램이 어떻게 알 수 있는지).

내가 볼 수있는 또 다른 솔루션은 마지막 업데이트 된 시간을 업데이트하여 업데이트를 위해 제출 된 시간을 확인하고, 중간에 다른 곳에서 업데이트되었는지 확인한 다음 사용자에게 자신의 변경을 진행하거나 버릴 수있는 선택을 제공하는 것입니다.

어쩌면 나는 해결책의 관점에서 잘못된 나무를 짖고있을 것입니다. 사람들은이를 구현 한 사람들의 경험은 무엇입니까 (상당히 일반적인) 요구 사항은 무엇입니까?

도움이 되었습니까?

해결책

다음과 같이 할 것입니다 : 마지막 수정 시간을 편집 양식으로 저장하십시오. 제출시이 시간을 데이터베이스에 저장된 시간과 비교하십시오. 동일한 경우 테이블을 잠그고 (수정 시간과 함께) 데이터를 업데이트하고 테이블을 잠금 해제하십시오. 시간이 다르면 사용자에게 알리고 다음 단계를 요청하십시오.

다른 팁

타임 스탬프 비교와 좋은 아이디어. 구현하는 것은 저렴하며 생산에서 운영하기위한 저렴한 운영입니다. 누군가가 쓰기/업데이트가 발생하지 않았다는 상태 메시지를 사용자에게 다시 보내려면 논리를 작성하면 누군가가 이길 수 있기 때문입니다.

아마도 'lastupdateby'와 같은 필드에서 각 업데이트에 사용자 이름을 저장하고 업데이트를 선점 한 사용자에게 다시 반환 할 것입니다. 사용자에게 약간의 좋은. 기업의 의미에서 좋을 것입니다. 아마도 적절하지 않은 환경에 있지 않을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top