Update: 2026-07-05 18:33:35
This commit is contained in:
@@ -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)) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user