Update: 2026-07-05 18:33:35

This commit is contained in:
Hamza-Ayed
2026-07-05 18:33:35 +03:00
parent 27c0c916cd
commit 4150dbc7a6
2 changed files with 22 additions and 10 deletions
+21 -9
View File
@@ -19,8 +19,9 @@ require_once __DIR__ . '/../functions.php';
set_time_limit(0);
try {
$con = Database::get('main');
$redis = getRedisConnection();
$con = Database::get('main');
$conRide = Database::get('ride');
$redis = getRedisConnection();
} catch (Exception $e) {
die("Database connection failed: " . $e->getMessage() . "\n");
}
@@ -28,19 +29,30 @@ try {
echo "Starting Auto Marketing Pusher Engine...\n";
// 1. استخراج الركاب الخاملين في آخر ساعتين (الذين لم يقموا بأي طلب اليوم)
// نبحث في جدول locations أو tokens للركاب الذين لديهم نشاط قريب دون رحلات
// First, fetch active passenger IDs from the ride database
$stmtRide = $conRide->query("SELECT DISTINCT passenger_id FROM ride WHERE DATE(created_at) = CURDATE()");
$activePassengerIds = $stmtRide->fetchAll(PDO::FETCH_COLUMN);
if (!empty($activePassengerIds)) {
$placeholders = implode(',', array_fill(0, count($activePassengerIds), '?'));
$notInSql = "WHERE p.id NOT IN ($placeholders) AND p.status = 'notDeleted'";
} else {
$notInSql = "WHERE p.status = 'notDeleted'";
}
// Then, fetch idle passengers from the main database
$sqlIdle = "
SELECT p.id as passenger_id, t.token, p.country_code
SELECT p.id as passenger_id, t.token, IFNULL(MAX(pol.country_code), 'JO') as country_code
FROM passengers p
JOIN tokens t ON p.id = t.passengerID
WHERE p.id NOT IN (
SELECT passenger_id FROM rides WHERE DATE(created_at) = CURDATE()
)
LEFT JOIN passenger_opening_locations pol ON pol.passenger_id = p.id
$notInSql
GROUP BY p.id, t.token
LIMIT 1000
";
// ملاحظة: في بيئة الإنتاج، استخدم جدول فتح التطبيق (App Opens) للحصول على دقة أعلى للركاب الذين فتحوا التطبيق مؤخراً.
$stmtIdle = $con->query($sqlIdle);
$stmtIdle = $con->prepare($sqlIdle);
$stmtIdle->execute($activePassengerIds);
$idlePassengers = $stmtIdle->fetchAll(PDO::FETCH_ASSOC);
if (empty($idlePassengers)) {
+1 -1
View File
@@ -55,7 +55,7 @@ $sqlHistory = "
ROUND(pickup_lng / :grid) * :grid AS cell_lng,
country_code,
COUNT(*) AS demand_score
FROM rides
FROM ride
WHERE
status IN ('completed', 'cancelled_by_driver', 'timeout')
AND HOUR(created_at) = :next_hour