всем привет. не могу понять как сделать чтоб при открытии определенной страницы, шла запись каждую секунду в БД. а при закрытии страницы запись останавливалась. И также если эту страницу снова открыть то запись продолжиться а не начнется заново. в общем нужен скрипт который считает время, которое пользователь провел на данной странице..
каждую секунду - маразм, зачем оно. Обычно механизмы показа пользователей он-лайн оперируют точностью в 5 минут, если свяыше 5 минут не было обновления времени то считается оффлайн.... В вашем случае предлагаю при каждом открытии определенной страницы (или нескольких, или всех) при формировании страницы записывать текущее время, а так же вычислять разницу между старым и текущим временем и плюсовать в отдельное поле в таблицу длительности
не совсем то что нужно. задача такая. студент открыл страницу для изучения материала. и если он провел на этой странице 2 секунды и закрыл ее, то преподаватель в панеле администратора должен увидеть запись сколько времени ученик изучал материал. а вдруг этот ученик не откроет больше этот материал и запись в бд вовсе не пойдет...
но например можно аяксом ежесекундно передавать данные, но представьте что будет с сервером - в минуту 60 запросов от одного пользователя, а если 10? 100? Только ради секунд Я думаю преподавателю достаточно будет и минут или самого факта что было посещение не было
представляю. прекрасно понимаю. я уже людям все объяснил,но они за свое - им нужно знать точное время, которое провел пользователь изучая материал, вплоть до секунд
тогда ajax с таймером. НО это не гарантирует что пользователь не откроет страницу и не уйдет пить чай )
Ыыы )))) 10 пользователей*60 сек=600 запросов в минуту. server has gone away будет результатом работы этого бреда
для снижения нагрузки можно попробовать писать данные в локальное хранилище и при уходе или закрытии старницы отправлять накопленый результат. правда сомневаюсь что все уходы переходы можно будет отследить
Если уж делать говно, то предлагаю сразу е6aнуть миллисекунды. А то вдруг студент будет изучать материал не 2 секунды, а 1.892
Студенты напишут скрипт, который будет говорить, что каждый студент читает все страницы одновременно в течении месяца бесконечно. Вот будет пичалька деспотам преподам.
студенты нагуглят эту тему и организуют DoS без напряга. Надо просто открыть много вкладок в браузере нескольким людям)
И что ? Это реально организовать даже на одном ядре. Тем что не нужно каждый раз передавать избыточную информацию. Постоянный коннект например ещё. Хоть по клику мышки отсылай.
Где организовать? На выделенном сервере? На недорогом хостинге тебя за такое попросят думаю уже на второй день, даже если хостинг будет справляться... Вообще организовать можно то все что угодно, только зачем глупости организовывать, мне не ясно.
А то. Там что, 10 студентов учатся? Или сотня? Или таки больше? Не надо потакать идиотизму. Дада, конечно. Особенно на обычном хостинге, с ограничением в 10 запросов. Реально на вещи смотреть надо, а не теорией раскидываться, у них там 100% не дата-центр НАСА
Хватит это терпеть. Изучайте ограничения при оформлении услуги. Если таковых нет - разбирайтесь. Что значит попросят ? Поясняй за глупости. Я не вкурил, ты о чем ? Напруга не обозначена или что ? Что это блин за хостинги такие, алло, 2017 год, где вы такое говно находите или совсем все бомжи кругом ?
Голословность. Давай ссылки на недорогие хорошие хостинги с адекватной и быстрой техподдержкой и высоким аптаймом 99%+ которые можно е6ать и в хвост и в гриву ежесекундными запросами в бд. Посмотрим хоть на эти чудеса и будем знать!
голословность. не выдержит. 1000 юзеров одновременно по записи каждую секунду тупо бд рухнет и все Ох, ебатюшки, ромка, абромич?! Сколько лет! А, или это ты, билли? Короче, вас фиг поймешь, миллиардеров. А тут простые люди собрались. Которые не покупают выделенные сервера по 30-50 уёв в месяц, а берут простые хостинги за 3000 рублей в год. Так вот у них почти у всех ограничение на кол-во запросов к БД. 10-20 максимум. Вернись на землю, "миллиардеришко". И понтов поменьше, "миллиардеришко". 1000 одновременных записей в секунду положит нафиг твои понты напрочь или ты не выполнишь условий задания.
Во-первых, мир не заканчивается на mysql, тот же pgsql при правильной настройке очень даже выдержит, монга выдержит и не подавится, а in-memory db и не заметит, но это всё не суть. Потому, во-вторых, задача стоит учитывать вплоть до секунды, а не писать каждую секунду. Почувствуйте разницу, как говорится. Посему, мысленно сказав @Abyss спасибо за правильный ответ, мы берем ноду, вешаем её за nginx`ом, прямо в ней же храним данные приходящие к нам по сокетам и с определенной периодичностью результат сливаем в БД. На лицо сплошной профит и небольшой риск потерять период, на который в общем всем в итоге будет насрать. p.s. vps за 3000 в год таки тоже существуют и ограничивать вас будут лишь реальные лимиты по оп и процессору. В чем проблема то?
теория, теория, теория... На практике, в условиях поставленной задачи вы никогда такого не реализуете. Если это только не институт, который основал какой-нибудь цукерберг и у котрого есть огромные мощности, несворованные деньги и т.д. есть теория, где это можно реализовать, и есть суровая реальность. Так именно в этом. В ограничениях.