Как установить время онлайн на сайте РНР?
Весь вопрос в том, как Вы будете фиксировать не время входа, а время ВЫХОДА! 
Не имея этого показателя можно смело цитировать Папанова: "Шэф, усё пропало!!!".
Чтобы зафиксировать выход - запускайте с нужным интервалом (он будет и являться максимальной погрешностью) аякс-функцию которая особо ничего делать не будет, а просто будет давать "маяк" на php: "Он еще сидит, фиксируй время по часам своим php-шным серверным". Как только клиент закрывает сайт - аякс не маякует, время не обновляется, а значит все. Нет его (посетителя).
Ну а далее дело за сложением и вычитанием... Profit!))
В localStorage пиши через js посекундно, при бездействии +/- Х время тормози счётчик и шли в бд, наводят мышку на закрыть таб тормози и шли в бд, разлогинились шли в бд.