fixes to the avg duration computation
This commit is contained in:
@@ -110,9 +110,14 @@ class ProcessTrackingPayload implements ShouldQueue
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calculate duration, ensuring it's never negative (handle out-of-order events)
|
||||||
|
// Use max() to ensure we use the latest timestamp for ended_at
|
||||||
|
$endedAt = $session->ended_at ? max($now, $session->ended_at) : $now;
|
||||||
|
$duration = max(0, (int) $endedAt->diffInSeconds($session->started_at, false));
|
||||||
|
|
||||||
$session->update([
|
$session->update([
|
||||||
'ended_at' => $now,
|
'ended_at' => $endedAt,
|
||||||
'duration' => $now->diffInSeconds($session->started_at),
|
'duration' => $duration,
|
||||||
'exit_page' => $this->payload['path'] ?? $this->payload['url'] ?? $session->exit_page,
|
'exit_page' => $this->payload['path'] ?? $this->payload['url'] ?? $session->exit_page,
|
||||||
'pages_count' => $session->pageViews()->count(),
|
'pages_count' => $session->pageViews()->count(),
|
||||||
'is_bounce' => $session->pageViews()->count() <= 1,
|
'is_bounce' => $session->pageViews()->count() <= 1,
|
||||||
|
|||||||
Reference in New Issue
Block a user