Страница пользователя и Новостная лента событий. у кого есть опыт?
Всем Привет! вообщем ломаю голову как создать новостную ленту событий и страницу пользователя. копирую как в ВК.
сперва думал сделать так, создать таблицу где буду хранить события юзера, добавил он фото или видео. репостнул там что то. Записывать ID юзера, тип события и ID события ну и время события. Потом столкнулся с тем как я буду выводить эти самые события саму инфу на страницу юзера. джоины не подходят, они злые. да и потом у событий разная инфа по ячейкам.
на сервере стоит MySql. еще как то надо будет с фотками решать вопрос там как то группировать по времени в одно события скажем за последний час.
поделитесь опытом кто чем сможет.
может уже есть кто реализовал такое.
Допустим я в правильном направлении. Как быть что если у меня структура разная по типам событий. у фоток одна у видео другая структура? новости, репосты. одинаковых нет. получаеться как то нужно выдергивать по типам
добавляю видео пишу в базу событие user_page личная страница пользователя
id - AI
uid - user ID
type - 'video'
type_id - ID video
data - время
делаю запрос к примеру с джоном вывожу информацию о юзере (т.к. на его странице могут оставить еще кто то сообщение) сам видео файл т.е. его имя, ссылка постер.
видео я увидел. а у фоток структура базы уже другая. и этот запрос к базе уже не подойдет.
в итоге получаеться что все модули подгонять под один шаблон запроса? переделывать
Тогда без join фото/видео/статьи. Найти нужные события, а потом в цикле отдельный запрос к нужному фото/видео/статье.
Не очень эффективно, но просто. Для начала сойдет.
Boris Korobkov: за один запрос к новостной ленте многовато под запросов будет.
будет у меня 10 друзей и еще подписчики. каждому отдать, и самому от всех получить ну к примеру 50 событий и запросов столько же получиться
Прям все 10 друзей круглосуточно сидят на вашем сайте и каждые 10 секунд обновляют страницу? Вот когда такое и будет - тогда и будете оптимизировать, кэшировать, да и вообще откажетесь от MySQL.
А пока сделайте самым простым, но не самым худшим способом.