kostya_dev
@kostya_dev
dev

Как реализовать сервис случайной выдачи?

Добрый день, друзья.

Думаю все знают такой сайт как Кинопоиск. У них есть раздел "Случайный фильм" (kinopoisk.ru/chance) Может ли кто-то подсказать, как реализован этот сервис? Может есть ссылки с информацией по подобным сервисам. А то не особо представляю как даже вопрос задать в поисковик.

Спасибо.
  • Вопрос задан
  • 266 просмотров
Сложность: Intern
Решения вопроса 2
  • Что бы понять как это работает, посмотрите на AJAX запросы, которые подгружают случайные фильмы:

    https://www.kinopoisk.ru/view_random_film.php?toke...

    В запросе передаются все параметры, в зависимости от выбранных вами фильтров, в ответ приходит массив из 5-ти случайных фильмов которые подошли по указанным параметрам:

    59def86719e34127718821.jpeg

    На сервере, наверняка, список случайных фильмов выбирается простым запросом к базе, с использованием RAND функции.

    Стоит обратить внимание, что запрос делается на 5 фильмов вперёд, что бы показывать пользователю без задержек, т.е. когда он нажимает кнопку "случайный фильм" ему показываются фильмы по порядку из предыдущего ajax-запроса, а новый запрос уже выбрал 5 следующих новых фильмов и они находятся в памяти на клиенте (в переменной JavaScript'а), как только пользователь прошёл 5 фильмов, идёт новый запрос на сервер, а пользователю показываются фильмы загруженные ранее предыдущим запросом.

    Для визаульного "ВАУ-эффекта" вы можете использовать какой-нибудь JS-плагин, слайдер контента, например www.menucool.com/responsive-slider. Либо можно написать анимацию смены слайдов самому с использованием css transition.
    Ответ написан
  • xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.ru
    Проще всего, делать "перетасовку колоды оставшихся карт" при каждом запросе (с "отбрасыванием"/изъятием просмотренных карт из колоды):
    1. Перемешиваем, берём N первых элементов перемешанного массива (сколько записей нужно показать за один запрос; для PHP - функция array_shift()) и показываем записи с этими ID-шниками (ID - это значение элемента).
    2. Исключаем те, что уже отобразили (для PHP - функция array_shift()) и сохраняем просмотренные элементы массива в переменную сессии.
    3. При следующей выборке - убираем просмотренные элементы из всего списка элементов.
    4. GOTO 1.
    Ответ написан
Пригласить эксперта
Ответы на вопрос 1
  • Вам нужен простой генератор случайных чисел. Смысл таков.
    Есть массив с данными, от 1 до 1000 например. запускаете генератор случайных чисел от 1 до 1000, и выданное число это и будет элемент массива. А все остальное это просто доп проверки, которые сужают массив.
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы