Update: 2026-07-14 00:54:50

This commit is contained in:
Hamza-Ayed
2026-07-14 00:54:51 +03:00
parent a547b81b60
commit a81f805796
2 changed files with 8 additions and 4 deletions
+4 -3
View File
@@ -2,9 +2,10 @@
// backend/transit/cron_approaching_alerts.php
// يُنفذ كل دقيقة عبر Cron Job لإرسال تنبيهات اقتراب الباص من المحطات (أقل من 2 كم)
//
// ملاحظة أداء: الاستعلام الأول رخيص (فهرس idx على status)، ولكل رحلة نشطة
// فقط استعلامان إضافيان — ويُتجاهل فوراً أي رحلة بلا موقع GPS حديث (< 3 دقائق)
// لتفادي ضرب القاعدة لرحلات متوقفة أو باصات فقدت الاتصال.
// ملاحظة أداء: الاستعلام الأول يستخدم فهرس idx_status (WHERE status='started')
// فيقرأ فقط الرحلات الجارية الآن (عددها = عدد الباصات على الطريق، صغير)، لا كل
// الجدول. لكل رحلة نشطة استعلامان إضافيان فقط، ويُتجاهل فوراً أي رحلة بلا موقع
// GPS حديث (< 3 دقائق). خارج أوقات الدوام (لا رحلات) يخرج فوراً بلا أي عمل.
require_once __DIR__ . '/../core/bootstrap.php';
require_once __DIR__ . '/functions.php';
+4 -1
View File
@@ -213,7 +213,8 @@ CREATE TABLE IF NOT EXISTS `transit_trips` (
UNIQUE KEY `uq_schedule_date` (`schedule_id`, `trip_date`),
KEY `idx_route_date` (`route_id`, `trip_date`),
KEY `idx_org_date` (`org_id`, `trip_date`),
KEY `idx_driver_date` (`driver_id`, `trip_date`)
KEY `idx_driver_date` (`driver_id`, `trip_date`),
KEY `idx_status` (`status`) -- cron_approaching_alerts يستعلم WHERE status='started' كل دقيقة
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- -----------------------------------------------------------------
@@ -342,6 +343,8 @@ SET FOREIGN_KEY_CHECKS = 1;
-- (بدونها: Admin/transit/route/approve.php بإجراء reject يفشل بخطأ SQL دائماً)
-- ALTER TABLE transit_drivers ADD KEY idx_main_driver (main_driver_id);
-- (بدونها: كل استعلام transitResolveDriver / driver/me.php = مسح جدول كامل)
-- ALTER TABLE transit_trips ADD KEY idx_status (status);
-- (بدونها: cron_approaching_alerts كل دقيقة = مسح جدول transit_trips كامل)
-- -----------------------------------------------------------------
-- -----------------------------------------------------------------