En esta actualización se ha intentado mejorar la seguridad y la información que se facilita al usuario para indicar que el informe se está elaborando.
En concreto, se ha puesto un gráfico de progreso para indicar que el informe se está elaborando o se está descargando.

El botón de 3 estado queda codificado:
- Client (before):
Swal.fire({
// icon: 'info',
title: 'El Informe se ha inciado y se está ejecutando',
text: '',
imageUrl: "MyCode/images/calculated.gif",
imageHeight: 200,
imageAlt: "Estamos trabajando",
timer: 60000,
timerProgressBar: true,
toast: true,
showConfirmButton: false,
position: 'center', // "top-start",
footer: ''
})
- Server:
$_SESSION['report_fase'] = 1; $_SESSION['report_file'] = ''; include "MyCode/Report001/report.php"; $_SESSION['report_fase'] = 2; $result['report_file'] = $_SESSION['report_file']
- Cient (after):
window.open("MyCode/Report001/report.php","_blank" );
Swal.fire({
// icon: 'info',
title: 'El Informe se ha descargado',
text: '',
imageUrl: "MyCode/images/download.gif",
imageHeight: 200,
imageAlt: "Estamos trabajando",
timer: 4000,
timerProgressBar: true,
toast: true,
showConfirmButton: false,
position: 'center', // "top-start",
footer: ''
})
Con este sistema el proceso de elaboración del informe se fracciona en 2 fases (la obtención y la descarga). A nivel de seguridad, no se puede ejecutar el informe aunque se conozca la URL del mismo y al usuario se le facilita el gráfico indicando que se está elaborando el informe.
DEMO: https://fhumanes.com/reports/
Si te interesa este tema o deseas disponer del ejemplo, sigue este enlace.

¿Qué es una aplicación grande en el entorno de PHPrunner? Que yo conozca no existe una definición concreta. Para mí, es grande cuando genera más de 3000 ficheros o cuando tiene más de 50 tablas. Espero que este criterio os sirva.
