Podrías apoyarte en un webworker javascript
:
https://developer.mozilla.org/es/doc...do_web_workers
1) Muestras la precarga
2) Llamas al webworker (en lugar de invocar un webworker js, invocarías a un php) y dejas seteado que al recibir un postMessage (onmessage), muestras la data que contenga.
3) Cuando el php realice el proceso, envías el postMessage a la página principal
4) Al recibir el postMessage muestras los datos recibidos y ocultas el loading.