2014-03-26 1 views
0

필자는 PHP/MySQL에서 매우 간단한 헬프 데스크 시스템을 계획 중입니다. 라이브 상담원은 테이블에 나열되며 플래그는 사용자와 대화 할 수 있도록 설정되어 있습니다.SQL 페어링 시스템에서 어떻게 지연 초과를 피할 수 있습니까?

오픈 에이전트를 선택하고 다음 쿼리로 레코드를 업데이트하는 사이에 다른 사용자가 선택을 실행하고 동일한 에이전트를 부여했을 가능성이 있습니다.

무거운 짐 밖에서 큰 문제가 될 것으로 예상되는 것은 아니지만, 여전히 걱정거리입니다. 이 문제는 이전에 해결 된 것으로 확신하지만 어디에서 찾을 지 모르겠습니다. 이중 쌍을 피하려면 어떻게해야합니까?

+1

[dba.stackexchange] (http://dba.stackexchange.com/questions/61603/how-to-query-and-increase-a-value-counter-in-a-)에서 내 답변 중 하나를 읽으십시오. thread-safe-way-avoid-race-co/61605 # 61605)를 사용하십시오. – GhostGambler

+0

정확히 내가 필요로하는 것처럼 보입니다. 나는이 프로젝트를 위해 PDO를 작성한 DAL이 어떤 수정도없이 그것을 처리 할 수있을 것이라고 믿습니다. 고맙습니다! – Morgan

답변

1

이 문제는 (내) SQL transactions 년 전을 사용하여 해결되었습니다. 즉, 테이블 구조는 InnoDB 엔진을 사용해야하며, 단순성과 속도 및 보안을 위해 prepared SQL 문 (PHP PDO은 매우 쉽습니다)을 사용해야합니다.

+0

저는이 특정 프로젝트에 대한 PDO를위한 추상화 레이어를 실제로 작성했습니다. 수정없이 트랜잭션을 잘 처리 할 것이라고 생각합니다. – Morgan

관련 문제