Php 如何在没有向数据库添加任何内容时触发Laravel中的事件,而不是在更新数据库时发出警报?

Php 如何在没有向数据库添加任何内容时触发Laravel中的事件,而不是在更新数据库时发出警报?,php,laravel,websocket,Php,Laravel,Websocket,我正在Laravel上构建一个简单的拍卖解决方案。下面的代码是一些提取的测试代码,假设它充当拍卖人 问题是,当它运行时,它会锁定对Auctionbid Postgres表的访问,用户不能在运行时出价。我的测试是在本地主机上进行的,在拍卖中运行一些用户,以及在同一个盒子/同一个IPtrigger上运行拍卖过程(“竞价频道”、“竞价警告”和$message); } 如果($bidIncrementResetCounter==2){ $message=“一次……两次……”; $pusher->trig

我正在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)//
   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