Para este tipo de problemas utilizo nodeJS + websockets, que seria una alternativa optima para lo que buscas, con "PHP puro" no creo que se pueda pq PHP se ejecuta en el lado servidor y no tiene alcance en el lado cliente, osea que no puede saber si el usuario cierra el navegador, etc
NodeJS & Websockets