Как реализовать «недавно просмотренные видео»?
Есть сайт, на котором можно ввести название и появится это видео и можно смотреть его, есть у него айди. Стоит задача такая: реализовать недавно просмотренные видео, сохраняя последнее время просмотра, дабы после возвращения на сайт можно было не искать момент где закончил смотреть и какие видео я смотрел.
Все это насколько я понимаю, нужно хранить в LocalStorage, тк регистрации на сайте нет. При открытие видео, нужно запускать секундный таймер и каждый раз перезаписывать данные в LocalStorage.
Но, я думаю это кастыль, запускать таймер секундный. Как правильно такое вообще реализовать?
Дополнительно:
Если регистрации не будет, то выбор небольшой - куки,локалстор, indexedDB. Для твоей задачи подходит локальное хранилище. По поводу же таймера - да будет работать, я бы что-то такое и делал. Только лучше сделать это через какой-нибудь сервис-воркер, чтобы наверняка браузер не "потушил" этот отсчет.
интересно, а в ютубе как работает :)
на сколько мне известно, ютуб не секунда-в-секунду сохраняет последнее время просмотра, а с небольшой задержкой, а значит, если говорить о банальном, у ютуба есть таймер на каждые 10 секунд, где он заносит данные в бд с текущей меткой времени, на которой находится плеер.
upd. Конечно у этого метода есть и минусы - частая работа с бд, особенно если видео одновременно будет смотреть 100+ человек, то это в моменте может быть, грубо говоря, 100+ запросов к бд. Но оптимизация - это уже другой вопрос
window.onbeforeunload = function(){ // Do something } // OR window.addEventListener("beforeunload", function(e){ // Do something }); |
window.onbeforeunload = function(){ // Do something } // OR window.addEventListener("beforeunload", function(e){ // Do something });
и еще тысяча методов, которые позволят не дергать ничего раз в 10 секунд
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для реализации функционала "недавно просмотренные видео" на своем сайте, вам потребуется хранить информацию о просмотренных видео для каждого пользователя. Это можно сделать с помощью базы данных, где будет храниться идентификатор пользователя и идентификаторы просмотренных им видео.
Начнем с создания таблицы в базе данных для хранения этой информации. Допустим, у нас есть таблица `viewed_videos` с полями `user_id` и `video_id`.
```php
CREATE TABLE viewed_videos ( user_id INT, video_id INT );
```
Когда пользователь просматривает видео, вы можете добавить запись в эту таблицу с его идентификатором и идентификатором просмотренного видео.
```php
INSERT INTO viewed_videos (user_id, video_id) VALUES (1, 123);
```
Для отображения "недавно просмотренных видео" на странице пользователя, вы можете выполнить запрос к базе данных, чтобы получить список просмотренных видео для конкретного пользователя. Например, для пользователя с идентификатором 1:
```php
SELECT video_id FROM viewed_videos WHERE user_id = 1 ORDER BY id DESC LIMIT 5;
```
Полученные идентификаторы видео можно использовать для вывода превью или ссылок на соответствующие видео на странице пользователя.
Таким образом, вы сможете реализовать функционал "недавно просмотренные видео" на своем сайте, который будет отображать последние просмотренные видео для каждого пользователя.