Как реализовать статус «просмотрено» в чате (напротив сообщений)?
Используй WebSocket. Ajax для такого функционала- прошлый век
Отправлять текущий статус пользователя AJAX. Т.е. к примеру каждую секунду(к примеру!) - ajax запрос, типа пользователь читает текущий диалог, если он у него открыт - в таблице messages создать поле 'is_read' и ставить значение 1 (прочитано). Если закрыт - запросы не посылаются.
Также доводя до идеала - если пользователь не совершает действий отключаем сию систему с ajax )