diff --git a/app/Console/Commands/Grapper/TxOdds/Odds/Tools/ActiveSpread.php b/app/Console/Commands/Grapper/TxOdds/Odds/Tools/ActiveSpread.php index 577beb0e..8bddade3 100644 --- a/app/Console/Commands/Grapper/TxOdds/Odds/Tools/ActiveSpread.php +++ b/app/Console/Commands/Grapper/TxOdds/Odds/Tools/ActiveSpread.php @@ -3,6 +3,7 @@ namespace App\Console\Commands\Grapper\TxOdds\Odds\Tools; use Illuminate\Support\Facades\DB; +use PDOException; class ActiveSpread { @@ -40,17 +41,49 @@ class ActiveSpread DB::table($table)->where('event_id', $event_id)->where('bookmaker_id', $bookmaker_id)->update(['active_spread' => 0]); if (in_array($table, ['odds_points', 'odds_points_ht', 'odds_points_q1'])) { - DB::table($table) - ->where('event_id', $event_id) - ->where('bookmaker_id', $bookmaker_id) - ->where('handicap', (float) $value['active_spread']) - ->update(['active_spread' => 1]); + $max_tries = 5; + $tries = 0; + do { + $retry = false; + try { + $query = DB::table($table) + ->where('event_id', $event_id) + ->where('bookmaker_id', $bookmaker_id) + ->where('handicap', (float) $value['active_spread']) + ->update(['active_spread' => 1]); + + return $query; + } catch (PDOException $exc) { + if ($tries < $max_tries && $exc->errorInfo[0] == 40001 && $exc->errorInfo[1] == 1213) { + $retry = true; + sleep(1); + } else { + throw $exc; + } + } + } while ($retry); } else { - DB::table($table) - ->where('event_id', $event_id) - ->where('bookmaker_id', $bookmaker_id) - ->where('total', (float) $value['active_spread']) - ->update(['active_spread' => 1]); + $max_tries = 5; + $tries = 0; + do { + $retry = false; + try { + $query = DB::table($table) + ->where('event_id', $event_id) + ->where('bookmaker_id', $bookmaker_id) + ->where('total', (float) $value['active_spread']) + ->update(['active_spread' => 1]); + + return $query; + } catch (PDOException $exc) { + if ($tries < $max_tries && $exc->errorInfo[0] == 40001 && $exc->errorInfo[1] == 1213) { + $retry = true; + sleep(1); + } else { + throw $exc; + } + } + } while ($retry); } } }