Update: 2026-07-04 17:02:24

This commit is contained in:
Hamza-Ayed
2026-07-04 17:02:24 +03:00
parent 838e5ec656
commit 3412f1b753
6 changed files with 74 additions and 3 deletions
+46
View File
@@ -0,0 +1,46 @@
# Redis State Cache Plan
## New Redis Keys
- `ride:{id}:state` (Hash) → status, driver_id, passenger_id, carType, updated_at
- `ride:{id}:driver` (Hash) → driver_name, car_model, car_plate, rating, phone (cached)
## Changes Per File
### acceptRide.php
After MySQL lock succeeds:
```php
$redis->hmset("ride:$rideId:state", [
'status' => $status,
'driver_id' => $driverId,
'passenger_id'=> $passengerIdValue,
'carType' => $carType,
'updated_at' => time()
]);
$redis->expire("ride:$rideId:state", 86400);
$redis->hmset("ride:$rideId:driver", $driverInfo);
$redis->expire("ride:$rideId:driver", 86400);
$redis->publish("ride:state_changes", json_encode([
'ride_id' => $rideId, 'status' => 'accepted',
'driver_id' => $driverId, 'passenger_id' => $passengerIdValue
]));
```
### start_ride.php
```php
$redis->hmset("ride:$rideId:state", ['status' => 'Begin', 'updated_at' => time()]);
$con_ride->prepare("UPDATE ride SET status = ?, rideTimeStart = NOW() WHERE id = ?")->execute([$status, $ride_id]);
$redis->publish("ride:state_changes", [...]);
```
### arrive_ride.php, cancel_ride_*.php
Same pattern: Redis update first (or after), then MySQL, then Pub/Sub.
### finish_ride_updates.php
No change to Redis state (keep MySQL transaction as-is).
## Socket Server Changes (loction_server/driver_socket.php)
- Subscribe to Redis `ride:state_changes` channel
- On message: update in-memory state, emit to passenger room
- Read from `ride:{id}:state` hash instead of MySQL queries