Detectar si la descarga está completa

Tengo un script PHP de descarga forzada muy simple y estándar.

¿Cómo verifico si / cuando la descarga se ha completado para notificar al usuario en el lado del cliente? Ni siquiera necesito mostrar el progreso en tiempo real, solo estoy interesado en el evento muy específico: "cuando finaliza la descarga". Según mi investigación, parece que tendría que determinarse desde el lado del servidor ya que no hayondownloadready evento y no creo que sea posible interceptar eventos del navegador.

Parece que mi mejor opción sería comparar los bytes enviados al total de bytes con algún tipo de interacción cliente / servidor. ¿Cómo haría para verificar los bytes enviados desde el servidor para una descarga forzada de PHP? ¿Hay algún tipo de variable PHP global que almacene estos datos que pueda hacer ping con AJAX?

    <?php

    header("Content-Type: video/x-msvideo");
    header("Content-Disposition: attachment; filename=\"".basename($realpath)."\";");

    ...

    $chunksize = 1 * (1024 * 1024); // how many bytes per chunk
    if ($size > $chunksize) {
           $handle = fopen($realpath, 'rb');
           $buffer = '';
           while (!feof($handle)) {
                 $buffer = fread($handle, $chunksize);
                 echo $buffer;
                 ob_flush();
                 flush();
           }
          fclose($handle);
     }             
     else {
         readfile($realpath);
     }
     exit();
     ?>

La razón por la que necesito esto:

Para el proyecto en el que estoy trabajando, se requiere que después de que comience la descarga, la página redirija (o muestre) una página de "espere mientras se completa la descarga". Luego, una vez que esté completo, debe redirigirse a (o mostrar) una página "Su descarga está completa, gracias". Estoy abierto a otras ideas que lograrían el mismo resultado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta