- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Приветствую всех!
Такая ситуация: есть пользователи, есть отношения между ними(дружба), есть журнал активности (общий, куда заносятся действия пользователя, например, запись в блог/загрузка фотографии).
В общем, нужно организовать аналог раздела "новости" ВКонтакте.
В связи с этим возникли вопросы. Как делать запросы к базе? Например, у пользователя 100 друзей и каждый из них совершил какое-то действие за текущий день.
Теоретически этот пользователь должен всё это увидеть. Долбить базу циклом в сто запросов по каждому из друзей и сохранять в кэш (чтобы не повторять этого больше)?
Сортировку по времени уже можно сдедать в ajax.
Может у кого-то есть опыт создания чего-то похожего?
Заранее спасибо.
Ммм... а собственно в чем проблема?
Формируете список друзей пользователя(select * from where is_friend), затем приклеиваете данные о действиях, совершенных конкретным другом (либо просто склеиваете, либо через JOIN'ы)
А дальше в РНР обрабатываете полученный массив как душе угодно
Какая посещался и какой сервер?
Долбить базу циклом в сто запросов по каждому из друзей и сохранять в кэш
Это вообще лишнее. Все это делается одним запросом, например с JOIN нескольких таблиц (или даже без него), но это все зависит от структуры БД. Не видя структуры все это "вилами по воде".
WebTih и maldivec верно говорят
select нужные поля новостей/действий
from новости/действия
where пользователь in (запрос на выборку айди фрэндов)
and/or прочие условия (на дату/время например, выбрать сегодняшние или по интервалу времени от последнего визита до текущего времени, что то в этом духе)
без структуры таблиц можно только так из пушки по воробьям пострелять, чем собственно и занимаемся :)
WebTih верно говорит
select нужные поля новостей/действий
from новости/действия
where пользователь in (запрос на выборку айди фрэндов)
and/or прочие условия (на дату/время например, выбрать сегодняшние или по интервалу времени от последнего визита до текущего времени, что то в этом духе)
Да, но нужно тянуть не только действие, но еще и какие-то другие данные :) например загруженные фото, добавленные посты и проч.
Так что не видя БД и точной формулировки задачи тут нечего говорить :)
без структуры таблиц можно только так из пушки по воробьям пострелять, чем собственно и занимаемся
Приходится работать с той информацией, которую предоставили))
Мы с maldivec тоже не точный запрос предложили, а общую форму, опираясь на определенную(гипотетическую) структуру хранения данных.
может лучше использовать продназначенные для этог осервера очередей для реализации подписок
надо брать разработчика БД и чтоб делал - а тут вас только запутают
описывать структуру это часа на 2-3 кто тут будет ?
ниче сложного для реляционных баз - на то они и придуманы - никаких циклов
friendships: //При обоюдной дружбе status = 1; иначе status = 0; и это заявка на дружбу.
-fid int
-user_id int
-friend_id int
-date
-status enum
users
-uid int
-nickname varchar
... //и так далее
lastactivity
-lid int
-user_id int
-nickname varchar
-action enum //несколько разновидностей событий
-objekt_id int //ссылка на объект связанный с действием (например id фотографии,id человека с которым подружился пользователь и так далее)
-date
friendships: //При обоюдной дружбе status = 1; иначе status = 0; и это заявка на дружбу.
-fid int
-user_id int
-friend_id int
-date
-status enum
users
-uid int
-nickname varchar
... //и так далее
lastactivity
-lid int
-user_id int
-nickname varchar
-action enum //несколько разновидностей событий
-objekt_id int //ссылка на объект связанный с действием (например id фотографии,id человека с которым подружился пользователь и так далее)
-date
:) мы, конечно, добрые саморитяне... но делать за вас работу тут вряд-ли кто-то будет.
Вам уже сказали - покопайте в сторону JOIN запросов (да и вообще сложных запросов, информации-то в сети полно), а сюда пишите что конкретно не получается, тогда может и помогут :)
Иначе вам в раздел "Работа для вебмастера" для поиска исполнителя.