私は、ユーザーが入札してオークションに勝ったことができるオークション サイトに取り組んでいます。私の場合、入札が終了した時点でオークションは終了します (管理者から設定された入札数)。だから私は最終的な入札についての提案が必要です. 最終的な入札が 2 人の異なるユーザーによってまったく同時に行われた場合はどうなりますか?
現在、誰かが入札ボタンをクリックすると、リクエストを ajax に送信し、そこにレコードを挿入しています。私が知っている唯一の方法は、データベースから確認し、残りの入札数を確認してそれに応じて挿入することです (1 人のユーザーを許可することにより) が、時間がまったく同じ場合は例外が発生する可能性があります。その間、入札が遅れてトラブルが増える可能性があるため、データベースのクエリに時間を無駄にしたくありません。
これが入札を行う私のphpコードです。
$cid = $_GET['cid'];
$uid = $_GET['uid'];
$pid = $_GET['pid'];
$type = $_GET['type'];
$date = date("Y-m-d H:i:s");
$placeBid = $obj->insert("bids",array("productid"=>$pid,"userid"=>$uid,"coinsid"=>$cid,"type"=>$type,"date"=>$date));
if($placeBid)
{
//if bid is successfull, update the status of coins in coins table.
$obj->update("coins","status=? where id=?",array(0,$cid));
//Also update bid counts in product table, to ensure the bids placed on specific product
if($type == 'paid')
{
$obj->update("products","bidscount=bidscount+1 where id=?",array($pid));
}
//check if still coins are left with user
//get bid coins for current user.
$bidCoins = $obj->select("coins","*","userid=? and status=?",array($userid,1));
if($bidCoins)
{
$coinsHtml = '<a href="#"class="close"/>X</a>
<div class="coins_popup">
<h3>Select your coins box and bid</h3>';
foreach((array)$bidCoins as $bidCoinsR)
{
$b = ($bidCoinsR['type'] == 'free')?"(B)":"";
if($bidCoinsR['type'] == 'free')
{
$type = 0;
}
else if($bidCoinsR['type'] == 'paid')
{
$type = 1;
}
$coinsHtml .= '<a href="javascript:void(0)" onclick="placeBid('.$bidCoinsR["id"].','.$bidCoinsR["userid"].','.$type.')"><span>'.$bidCoinsR["amount"].$b.'</span></a>';
}
$coinsHtml .= '<input type="hidden" id="product_id" value="" name="product_id">';
echo $coinsHtml .= '</div>';
}
else
{
echo 'You have no more coins available';
}
}
最善の方法を教えてください。ありがとう