From b6e3176ed06a07011d2cc22925ce709db6225b64 Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 27 Apr 2026 13:15:11 -0400 Subject: [PATCH] Projects: Fix slow load by using an optimized query to count tickets and tasks --- agent/projects.php | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/agent/projects.php b/agent/projects.php index 4809ea7d..0c54a0a7 100644 --- a/agent/projects.php +++ b/agent/projects.php @@ -190,34 +190,24 @@ $num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); // Get Tasks and Tickets Stats // Get Tickets - $sql_tickets = mysqli_query($mysqli, "SELECT * FROM tickets WHERE ticket_project_id = $project_id"); - $ticket_count = mysqli_num_rows($sql_tickets); + $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(ticket_id') AS count FROM tickets WHERE ticket_project_id = $project_id")); + $ticket_count = $row['count']; // Get Closed Ticket Count - $sql_closed_tickets = mysqli_query($mysqli, "SELECT * FROM tickets WHERE ticket_project_id = $project_id AND ticket_closed_at IS NOT NULL"); - - $closed_ticket_count = mysqli_num_rows($sql_closed_tickets); + $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(ticket_id') AS count FROM tickets WHERE ticket_project_id = $project_id AND ticket_closed_at IS NOT NULL")); + $closed_ticket_count = $row['count']; // Ticket Closed Percent if($ticket_count) { $tickets_closed_percent = round(($closed_ticket_count / $ticket_count) * 100); } // Get All Tasks - $sql_tasks = mysqli_query($mysqli, - "SELECT * FROM tickets, tasks - WHERE ticket_id = task_ticket_id - AND ticket_project_id = $project_id" - ); - $task_count = mysqli_num_rows($sql_tasks); + $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(task_id') AS count FROM tickets, tasks WHERE ticket_id = task_ticket_id AND ticket_project_id = $project_id")); + $task_count = $row['count']; // Get Completed Task Count - $sql_tasks_completed = mysqli_query($mysqli, - "SELECT * FROM tickets, tasks - WHERE ticket_id = task_ticket_id - AND ticket_project_id = $project_id - AND task_completed_at IS NOT NULL" - ); - $completed_task_count = mysqli_num_rows($sql_tasks_completed); + $row = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT COUNT(task_id') AS count FROM tickets, tasks WHERE ticket_id = task_ticket_id AND ticket_project_id = $project_id AND task_completed_at IS NOT NULL")); + $completed_task_count = $row['count']; // Tasks Completed Percent if($task_count) {