2012-06-23 2 views
0

여러 사용자에게 하나의 항목을 제공하겠다고 말하면 최대 10 개의 항목을 '비활성화'할 때까지 모든 사용자가 구매할 수 있습니다. 항목은 mainitems 테이블에서 가져 와서 특정 사용자로 필터링됩니다.한 번에 여러 항목을 구매하려는 사용자가 행을 잠그고 있습니까?

구매할 때마다 항목 행에서 구매 횟수가 증가하도록 카운트가 증가합니다. 11 명의 사용자가 모두이 항목을 @ 번 구매하려고하는 것을 어떻게 제어 할 수 있습니까? 구매가 완료되고 비교 될 때까지 단순히 행을 잠그는 것만으로이 문제를 해결할 수있는 가장 좋은 방법입니까? 아니면 다른 사용자의 결과를 끊임없이 제거한 다음 다시 활성화하지 않고도이 작업을 수행 할 수있는 방법이 있습니까?

+0

이것을 확인하십시오. http://stackoverflow.com/questions/6914122/mysql-innodb-transaction-concurrency – Venu

+0

PHP를 많이 알지는 못하지만 PHP에 ** 동기화 ** ** Java가 있습니까? –

+0

여기에 나와있는 답변이 제시하는대로 거래를 살펴보십시오. – Mahn

답변

1

당신은 SQL 트랜잭션 를 사용해야와 PHP에서이 방법으로 try{} catch(){}

try 
{ 
//mysql begin transaction 


//the code that does what you said it would do 


//mysql commit transaction 
} 
catch(Exception $ex) 
{ 
//mysql rollback 

/return false 
} 

를 사용한다, 나는 그나마이 두 사용자가 같은 시간에 항목을 요청하는 경우가 될 것이라고 생각 트랜잭션은 FIFO로 처리됩니다.

관련 문제