Кто подскажет как сделать время онлайн за месяц

sanekdark

Новичок
Репутация
0 / 79
Добрый день кто подскажет. как сделать онлайн чтоб подчитывал кто сколько наиграл за месяц?
 
Добрый день кто подскажет. как сделать онлайн чтоб подчитывал кто сколько наиграл за месяц?
скажу по русски если у тебя максимум играет 5-10 чекловек то можно такое сделать, если больше то нет
нагрузка с алон и так не маленькая + то что ты просишь большую нагрузку создаст..... по русски говоря бред...
 
Всё реально и без нагрузки,код за вас писать не буду скажу теорию-когда перс уходит в офф считываем данные онлайна из базы и пишем в фаил,затем плюсуем далее данные,элементарно просто...
 
Система такая, добавляешь в базе игроков 2 новые строки: enter,newtotal, lasttotal.

Как тока игрок входит в игру, вноси туда время, как тока выходит (вот тут сложнее ибо не обязательно он выйдет через кнопку) сравняется время нынешнее и то что было в enter. разницу добавляешь в newtotal. В крон добавь файл который будет запускаться раз в месяц, который будет из newtotal переносить в lasttotal а newtotal обнулять.

Таким образом в самой игре в игнформации введи проверку если lasttotal<>0 тогда пусть показывает lasttotal (скока в прошлом месяце был) если же нет, то newtotal (еще месяц не изсяк, время набирается). Вот и все собственно) Первая система что пришла в голову) Может можно и проще, но так тоже можно))) :)
 
Блин,да реально...Что вы как болячка так база...элементарные вещи и без неё делаются...база на крайний случай...а не "работает да и ладно".
 
Ну просто лично как по мне так забивать скрипт файлами тоже не вариант :)
 
При чём тут скрипт? файлы хоть на другом сервере держи...1 фаил и строка на каждого перса.В этой строке может быть что угодно,статы,победы и тд...serialize\unserialize ёмаё... :)
 
<censored>
вариант
допустим человек вошел в игру записываем значение time в какую-то ячейку. Каждый его клик обновляет 2ое значение где тоже прописываем time() , во время всей игры 2ое изменяется постоянно, как-бы извещая всех остальных что человек в онайле прошло 1 минута и теперь значение равно 60 секундам, предположим человек вышел из игры любым способом (на:) кнопку) ничего не делаем... и 2ое значение уже не обновляется само по себе, зато когда в следующий раз человек заходит считываем 1 и 2 значение от 2го отнимаем 1ое и это покажет сколько человек провел секунд в предыдущей сессии итд



Оскорбление пользователя. +10% Ins.
 
</TD>
 
Значит так...

Когда перс заходит в игру

Код:
mysql_query("INSERT INTO table (user_id, session_id, enter_time, online_time) VALUES ('".$user_id."', '".session_id()."', '".time()."', '' )");

Потом с каждого перехода (или в чате)

Код:
mysql_query("UPDATE table SET online_time=".time()."-enter_time WHERE user_ud='".$user_id."' and session_id='".session_id()."'");

#################################################

В конце месяца в кроне суммирую с ORDER


Потом

Код:
mysql_query("TRUNCATE TABLE table");


*wink*Кликните "Спасибо"
 
Это ты представляешь скока он запросов будет делать во время игры лишние? :)
 
При открытии сессии задаётся глобальная переменная времени. При закрытии сессии - из второго числа вычитается первое и результат уходит в файл или базу.
Для случая, когда выходят крестиком предусмотрены таймауты сессий.

А вообще - для того чтобы судить об оптимальности, нужно знать исходную задачу. Может сами замеры - уже неоптимальны.
 
да самое смешное,что таймер онлайна и так есть в алонах=) остаётся просто + значение куда нить,я бв писал в фаил =) как и ресы и боты да и всё на карте...да и не только это...
 
да самое смешное,что таймер онлайна и так есть в алонах=) остаётся просто + значение куда нить,я бв писал в фаил =) как и ресы и боты да и всё на карте...да и не только это...
мож показать пример как делал
 
Необходимо записывать начальный вход юзера в игру ( время ) и выход из игры. И считывать.
Без разницы, в файлах ты будешь хранить это либо в бд. Что там, что там - нагрузка будет.
 
Сверху