Fix payment server: remove global conRide to prevent crashing non-ride DB queries

This commit is contained in:
Hamza-Ayed
2026-08-01 18:28:30 +03:00
parent 998cad6756
commit f7df080b27
5 changed files with 175 additions and 72 deletions
+22 -3
View File
@@ -761,13 +761,27 @@ $io->on('connection', function ($socket) use ($INTERNAL_KEY) {
$driverState[$driverId] = [
'lat' => 0.0,
'lng' => 0.0,
'speed' => -999.0,
'speed' => -999.0,
'heading' => -999.0,
'status' => '',
'expire_ts' => 0,
];
} else {
// ‏اتصال جديد لا يضمن أن السائق ما زال عضواً في geo:drivers:* —
// ‏api_get_nearby.php يحذف العضوية كلّما وجد driver:profile منتهياً
// ‏(TTL = 900 ثانية)، بينما تبقى هذه الحالة في ذاكرة الـ worker لأن
// ‏سوكيت خدمة الخلفية (background_service) يظل مسجَّلاً فيمنع تنظيفها
// ‏عند إغلاق سوكيت الواجهة.
// ‏وبلا تصفيرها يجد أول update_location بعد فتح التطبيق أن status و
// ‏lat/lng بلا تغيير ⇒ لا GEOADD ⇒ يبقى الكابتن غير مرئي على خريطة
// ‏الراكب حتى يتحرك 10 أمتار أو يضغط زر التوفّر (الذي يقطع السوكيت).
// ‏نصفّر الجزء المتطاير فقط ليُجبَر أول تحديث على إعادة تسجيله.
$driverState[$driverId]['lat'] = 0.0;
$driverState[$driverId]['lng'] = 0.0;
$driverState[$driverId]['status'] = '';
$driverState[$driverId]['expire_ts'] = 0;
}
logMsg("✅ Driver Connected: #$driverId ($platform)");
// 🆕 Deliver any pending orders missed during disconnection
@@ -941,7 +955,12 @@ $io->on('connection', function ($socket) use ($INTERNAL_KEY) {
}
}
if ($needGeoadd || $statusChanged) {
// ‏نُعيد تأكيد العضوية في geo:drivers:* مع كل تجديد صلاحية (كل
// ‏EXPIRE_REFRESH_SECONDS) لا عند الحركة فقط: الكابتن المتاح والواقف
// ‏لا يُصدر didMove ولا statusChanged أبداً، فلو حُذف من المجموعة
// ‏(انقطاع، إعادة تشغيل السيرفر، تنظيف api_get_nearby) لما عاد إليها
// ‏قط. التكلفة: عملية GEOADD واحدة لكل كابتن كل دقيقتين.
if ($needGeoadd || $statusChanged || $needExpireRefresh) {
$eventBuffer[$driverId]['geoadd'] = [
'status' => $status,
'lng' => $lng,