Вариантов масса.
Один из самых обкатанных и производительных - сокет.ио, но нужно будет ставить отдельно сервер ноды, если не на ноде проект.
Вариант с пхп и лонг поллинг - на хабре есть пару толковых статей. Приемлемый вариант, его использует вк, например, но у них там свой пхп, с блэкджеком и компиляцией. В целом, при небольшой нагрузке и всем написанном на пыхе - нормальный вариант.
Вариант с жс и пхп, чат инициализируется с клиента запросами к аякс куску сайта, отвечающему за чат. Ставится сет интервал 10-15 секунд и опрашивается сервер на предмет "есть чё?". Минусы: задержка между сообщениями до 15 сек, и бомбежка сервера запросами.
Есть еще экзотика всякая, но там уже совсем треш и угар имхо.