getMessage() . "\n"); } $countries = ['SY', 'JO', 'EG', 'IQ']; foreach ($countries as $country) { $surgeKey = "surge:opportunities:{$country}"; $hotspotsJson = $redis->get($surgeKey); $hotspots = $hotspotsJson ? json_decode($hotspotsJson, true) : []; // In a real scenario, Kazan configs might be stored in a `kazan_commissions` table // or applied dynamically at the ride request time. // Here we will save the "active discounted Kazan multiplier" in Redis so the ride logic can apply it instantly. $kazanDiscountConfig = []; if (!empty($hotspots)) { foreach ($hotspots as $grid => $multiplier) { // If competitor surge is high enough, we lower our Kazan by a factor // Standard Kazan is let's say 15%. if ($multiplier > 1.2) { // Apply a 30% reduction to Kazan Commission for this grid $kazanDiscountConfig[$grid] = 0.70; // 70% of standard commission } elseif ($multiplier > 1.05) { // Apply a 15% reduction $kazanDiscountConfig[$grid] = 0.85; } } } $kazanKey = "surge:kazan_discounts:{$country}"; if (empty($kazanDiscountConfig)) { $redis->del($kazanKey); echo "[$country] No active Kazan discounts.\n"; } else { $redis->setex($kazanKey, 1200, json_encode($kazanDiscountConfig)); echo "[$country] Updated Kazan discounts for " . count($kazanDiscountConfig) . " active hotspots.\n"; } } echo "Done.\n";