Строчка $past = time()-500; означает у тебя, что пользователи будут считаться online в течение 500 секунд! Это больше 8 минут. Конечно, при таком времени может набраться много онлайновых посетителей.
В общем случае, чем выше это число (500, 600...), тем больше будет онлайновцев.
Вопрос в том, какое число выбрать. Мне кажется, 50-100 вполне достаточно.
Больше ошибок я не заметил.