Ecco qui. Naturalmente è solo un esempio (simile ad uno che avevo trovato in rete). Dovrai modificare le azioni da compiere e i vari cicli, ma dovrebbe/potrebbe funzionare...
Io l'avevo elaborato in maniera pesante, ma alla fine mi ha dato soddisfazioni.

Codice PHP:
<?php
ob_implicit_flush
(); # abilita il "flush" automatico
set_time_limit(0);  # imposta il limite massimo di lavoro dello script ad "infinito" (in teoria)
ignore_user_abort(true); # forzerà lo script a girare anche al termine della connessione

function doSomething() {
    
$file 'test.txt';
    
    
# azione iniziale
    
@file_put_contents($file'start test');
    
    while(!
connection_aborted()) {
        
# stampiamo a video qualcosa così PHP "capisce" se la connessione col browser è ancora in corso
        
echo " ";
        
# ora PHP verifica la connessione
        # flush(); # decommentare nel caso ob_implicit_flush() non funzionasse come dovrebbe
        # pausa di un secondo prima della ripetizione del ciclo
        
sleep(1);
    }

    
# questa operazione verrà effettuata soltanto quando la connessione col browser non sarà più attiva
    
@file_put_contents($file'end test');
    return 
true;
}

doSomething();
?>