Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
try { DB::beginTransaction(); DB::raw('LOCK TABLES order WRITE, tickets WRITE'); //logg(count($buy_tickets) > count($sell_tickets)); if(count($buy_tickets) > count($sell_tickets)){ //N筆買單對1筆賣單 $this->sell_to_N($sell_tickets[0], $buy_tickets, $product); }else{ //N筆賣單對1筆買單(機率應該最高) $this->buy_from_N($buy_tickets[0], $sell_tickets, $product); } DB::commit(); //DB::raw('UNLOCK TABLES'); return true; } catch (\Exception $e) { DB::rollback(); $this->err = '撮合失敗: ' . $e->getMessage(); return false; } |
Reference: