0

複数のユーザーにアイテムを提供するとします。アイテムが「非アクティブ化」されるまで、どのユーザーでも最大10回まで購入できます。アイテムはmainitemsテーブルから取得され、特定のユーザーにフィルターされます。

購入ごとに、アイテムの行でカウントが増加し、購入量を示します。このアイテムを一度に購入しようとしている11人のユーザーを制御するにはどうすればよいですか?購入が完了してから比較するまでその行をロックするだけでこれを達成するための最良の方法はありますか?または、他のユーザーから結果を絶えず削除してから再アクティブ化することなく、これを行う方法はありますか?

4

1 に答える 1

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 で処理されるのと同時に 2 人のユーザーがアイテムを要求することはないと思います。

于 2012-06-23T10:50:23.823 に答える