From b30fe7e96d846ba732ae480345ca9ca86a9290a3 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sat, 1 Aug 2026 18:37:02 +0300 Subject: [PATCH] Update: 2026-08-01 18:37:02 --- backend/core/Database/Database.php | 5 +++++ backend/ride/location/get.php | 6 ++++++ loction_server/api_get_nearby.php | 11 ++++++++++- loction_server/driver_socket.php | 4 ++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/backend/core/Database/Database.php b/backend/core/Database/Database.php index 7e49abd..a807bc5 100644 --- a/backend/core/Database/Database.php +++ b/backend/core/Database/Database.php @@ -57,6 +57,11 @@ class Database $user = getenv($cfg['user']); $pass = getenv($cfg['pass']); + // Fallback for missing ride table if intaleq-ridesDB is still configured + if ($name === 'ride' && $dbname === 'intaleq-ridesDB') { + $dbname = 'rideDB'; + } + if (!$dbname || !$user) { error_log("[FATAL] Database config missing for: $name (Check ENV keys: {$cfg['name']}, {$cfg['user']})"); throw new RuntimeException("Database configuration error."); diff --git a/backend/ride/location/get.php b/backend/ride/location/get.php index 268b9c9..d904ca2 100644 --- a/backend/ride/location/get.php +++ b/backend/ride/location/get.php @@ -52,13 +52,19 @@ try { $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); + + error_log("[get.php] api_get_nearby HTTP $httpCode | Response: $response"); $redisDrivers = []; if ($httpCode == 200 && $response) { $json = json_decode($response, true); if (isset($json['status']) && $json['status'] === true) { $redisDrivers = $json['drivers'] ?? $json['data'] ?? []; + } else { + error_log("[get.php] api_get_nearby returned error or false status. JSON: " . print_r($json, true)); } + } else { + error_log("[get.php] api_get_nearby failed. HTTP Code: $httpCode"); } if (empty($redisDrivers)) { diff --git a/loction_server/api_get_nearby.php b/loction_server/api_get_nearby.php index d92458e..bd7ab9f 100755 --- a/loction_server/api_get_nearby.php +++ b/loction_server/api_get_nearby.php @@ -31,6 +31,7 @@ $headers = getallheaders(); $receivedKey = $headers['x-internal-key'] ?? $_SERVER['HTTP_X_INTERNAL_KEY'] ?? ''; if (!empty($INTERNAL_KEY) && $receivedKey !== $INTERNAL_KEY) { + error_log("[api_get_nearby] Unauthorized: receivedKey ($receivedKey) != expectedKey ($INTERNAL_KEY)"); http_response_code(403); echo json_encode(['status' => false, 'msg' => 'Unauthorized']); exit; @@ -79,7 +80,15 @@ try { $profile = $redis->hgetall("driver:profile:$d_id"); $lastUpdate = isset($profile['updated_at']) ? (int)$profile['updated_at'] : 0; - if (empty($profile) || ($currentTime - $lastUpdate) > $max_silence) { + if (empty($profile)) { + error_log("[api_get_nearby] Driver $d_id skipped: profile is empty in Redis."); + $redis->zrem('geo:drivers:available', $d_id); + $redis->zrem('geo:drivers:busy', $d_id); + continue; + } + + if (($currentTime - $lastUpdate) > $max_silence) { + error_log("[api_get_nearby] Driver $d_id skipped: lastUpdate ($lastUpdate) is older than max_silence ($max_silence)."); $redis->zrem('geo:drivers:available', $d_id); $redis->zrem('geo:drivers:busy', $d_id); continue; diff --git a/loction_server/driver_socket.php b/loction_server/driver_socket.php index b837b0d..de671be 100755 --- a/loction_server/driver_socket.php +++ b/loction_server/driver_socket.php @@ -368,8 +368,10 @@ $io->on('workerStart', function () use ($io, $INTERNAL_KEY) { if ($st === 'off') { $pipe->geoadd('geo:drivers:available', $lng, $lat, $driverId); + logMsg("[REDIS BATCH] Added Driver $driverId to geo:drivers:available at $lat, $lng"); } elseif ($st === 'on') { $pipe->geoadd('geo:drivers:busy', $lng, $lat, $driverId); + logMsg("[REDIS BATCH] Added Driver $driverId to geo:drivers:busy at $lat, $lng"); } } } @@ -876,6 +878,8 @@ $io->on('connection', function ($socket) use ($INTERNAL_KEY) { $state = &$driverState[$driverId]; $now = time(); + + logMsg("[SOCKET] update_location received for Driver $driverId | status=$status, lat=$lat, lng=$lng"); // 1. Forward للراكب (ASYNC + throttle) if (!empty($passengerId)) {