Php 如何在没有向数据库添加任何内容时触发Laravel中的事件,而不是在更新数据库时发出警报?
我正在Laravel上构建一个简单的拍卖解决方案。下面的代码是一些提取的测试代码,假设它充当拍卖人 问题是,当它运行时,它会锁定对Auctionbid Postgres表的访问,用户不能在运行时出价。我的测试是在本地主机上进行的,在拍卖中运行一些用户,以及在同一个盒子/同一个IPtrigger上运行拍卖过程(“竞价频道”、“竞价警告”和$message); } 如果($bidIncrementResetCounter==2){ $message=“一次……两次……”; $pusher->trigger('bids\u channel','bid warning',$message); } 如果($bidIncrementResetCounter==3){ $message=“我们有赢家!”; $pusher->trigger('bids\u channel','bid warning',$message); 打破 } $bidIncrementResetCounter++; }否则{ $bidIncrementResetCounter=0; } } 否则{ $currentWinnerId=0; } $lastBidderId=$currentWinnerId; $lastBidderBidAmount=$currentWinnerBidAmount; 睡眠(10)//Php 如何在没有向数据库添加任何内容时触发Laravel中的事件,而不是在更新数据库时发出警报?,php,laravel,websocket,Php,Laravel,Websocket,我正在Laravel上构建一个简单的拍卖解决方案。下面的代码是一些提取的测试代码,假设它充当拍卖人 问题是,当它运行时,它会锁定对Auctionbid Postgres表的访问,用户不能在运行时出价。我的测试是在本地主机上进行的,在拍卖中运行一些用户,以及在同一个盒子/同一个IPtrigger上运行拍卖过程(“竞价频道”、“竞价警告”和$message); } 如果($bidIncrementResetCounter==2){ $message=“一次……两次……”; $pusher->trig
public function RunTheAuction($auction_item_id, $auction_id)
{
set_time_limit(300);
$options = array(
'cluster' => env('PUSHER_APP_CLUSTER'),
'encrypted' => true
);
$pusher = new Pusher(
env('PUSHER_APP_KEY'),
env('PUSHER_APP_SECRET'),
env('PUSHER_APP_ID'),
$options
);
$bidIncrementResetCounter = 0;
$lastBidderId = 0;
$currentWinnerBidAmount = 0;
$lastBidderBidAmount = 0;
$count = 0;
while(true){
$auctionbid = Auctionbid::select('id', 'bid', 'bid_timestamp', 'auction_bidder_id')
->where('auction_item_id', '=', $auction_item_id)
->where('auction_id', '=', $auction_id)
->orderBy('bid', 'desc')
->orderBy('bid_timestamp', 'asc')
->first();
if ($auctionbid) { //there is a bid on the item
$currentWinnerId = $auctionbid->id;
$currentWinnerBidAmount = $auctionbid->bid;
if (($lastBidderId == $currentWinnerId) && ($lastBidderBidAmount == $currentWinnerBidAmount)) { //it's the same bidder
if ($bidIncrementResetCounter == 1) {
$message = "Fair Warning!";
$pusher->trigger('bids_channel', 'bid-warning', $message);
}
if ($bidIncrementResetCounter == 2) {
$message = "Going once... Going twice...";
$pusher->trigger('bids_channel', 'bid-warning', $message);
}
if ($bidIncrementResetCounter == 3) {
$message = "We have a winner!";
$pusher->trigger('bids_channel', 'bid-warning', $message);
break;
}
$bidIncrementResetCounter++;
} else {
$bidIncrementResetCounter = 0;
}
}
else{
$currentWinnerId = 0;
}
$lastBidderId = $currentWinnerId;
$lastBidderBidAmount = $currentWinnerBidAmount;
sleep(10); //<-----------------------------ISSUE
$count++;
if($count == 12){break;}
} //end loop
} //end function RunTheAuction