@dzoid

Как хранить подписки на тэги (категроии) и вытаскивать их?

Добрый день, на социально-новостном сайте сайте есть таблица новостей вида
id, title, categories, tags
12, название, ',24,11', ',88,125,'
13, название2, ',34', ',28,154,241,'

Хочу добавить функционал чтобы пользователь мог подписаться на обновления из определенной категории новостей или тэга новости, на данный момент это работает так:

SELECT * FROM `posts` WHERE `tags` LIKE ',1400,' OR `tags` LIKE ',1309,' OR `categories` LIKE ',11,' и т д


Подписки пользователя хранятся в таблице вида
userid, tag_id, category_id
1, 23,
1, , 199

После запроса результат сохраняется в файловый кеш который считается актуальным 12 часов, когда пользователь нажимает на кнопку подписаться или отписаться - его кеш удаляется, как можно увеличить производительность этого функционала?

Еще хотелось бы обновлять кеш пользователя при выходе новости подходящей категории, как это лучше осуществить?
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ipokos
Могу предположить что подписки используются для вывода новостей на которые подписался пользователь.
Тогда у Вас есть таблица с категориями:
id_cat. | name_cat.
1 | example_name_1
2 | example_name_2
...

И таблица пользователей в виде
id_user | name | etc ... | categories

Отмеченные категории пользователем, можно складывать в массив, сериализовать, записывать строкой.
При входе пользователя, получаете его id и его отмеченные categories
ансериализуете строку в массив и можно составить например запрос:
SELECT name, your, columns FROM your_table WHERE id IN (1 , 2 ... или дополняете запрос что б выбирал сначала по тегам или т.п. )
Вообщем это как вариант.

А зачем вы храните подписки пользователя в файловом кеше?
Не лучше ли тогда не нагружать сервер и базу таблицами, если у пользователя могут быть только временные подписки и хранить например в куках?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы