PHP non può gestire il refresh della pagina, perché una volta che la pagina è visualizzata sul browser, PHP "non c'è più".
Come fai ora il refresh? Suppongo con un setInterval() in JS o qualcosa di simile, corretto?
Un'idea:
gestisci la comunicazione con js, usando ad esempio AJAX e da qualche parte devi tener traccia del timestamp dell'ultimo aggiornamento del file che contiene i messaggi della chat.
La pagina invia tramite JS una richiesta al server, il server confronta i timestamp del file salvato e quello dell'ultimo aggiornamento, se sono diversi risponde con i messaggi da scrivere nella chat, con JS recuperi i messaggi e li stampi nell'area della chat. Se i timestamp sono uguali, quindi non ci sono nuovi messaggi, il server risponde con un array vuoto, un null o quello che vuoi per riconoscere che non c'è niente di nuovo, JS riceve quesa cosa e non fa niente se non aspettare per inviare una nuova richiesta di aggiornamento.
Per quanto riguarda la parte JS, se ti è necessario, chiedi nella sezione Javascript.
Per PHP se hai domande specifiche su come/cosa fare, chiedi qui.