Potresti provare utilizzando in maniera adeguata le funzioni ignore_user_abort() e connection_status().
Dai un'occhiata qui: ignore_user_abort()
Comunque domani proverò a cercare tra qualche mio vecchio script: avevo utilizzato qualcosa di simile in passato...