What are the best practices for implementing a progress bar in PHP for tasks that may take longer to execute?

When implementing a progress bar in PHP for tasks that may take longer to execute, it is important to provide real-time feedback to the user on the progress of the task. This can be achieved by breaking the task into smaller chunks and updating the progress bar after each chunk is completed. Additionally, using AJAX to asynchronously update the progress bar on the front end can improve the user experience.

<?php

// Simulate a long-running task
$total = 100;
for ($i = 1; $i <= $total; $i++) {
    // Perform some task
    usleep(50000); // Simulate processing time
    
    // Calculate progress
    $progress = round(($i / $total) * 100);
    
    // Output progress to the browser
    echo "<script>updateProgressBar($progress);</script>";
    flush();
}

// Function to update progress bar
function updateProgressBar($progress) {
    echo "<script>document.getElementById('progress-bar').style.width = '{$progress}%';</script>";
}

?>