![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]()
Здравствуйте, программисты.
Работаю над одним проектом. Архитектура проекта такова, что на любой странице сайта, куда бы пользователь не перешел, будет выводиться большое количество информации из базы данных, из разных таблиц. Естественно, это очень большая нагрузка на сервер (при большом количестве пользователей) и я решил уменьшить эту нагрузку. Когда-то давно, вскользь читал о кешировании данных, но на том этапе мне это было не нужно и я бросил это гиблое дело. Теперь понял, что это один из способов существенно автоматизировать систему и как следствие ускорить работу проекта. Почитал теорию, затем инструкцию, установил Memcached. От вас прошу лишь пояснить мне, правильно ли я понял механизм работы Memcached. Идея такова. Допустим, необходимо вывести количество пользователей в онлайне на сайте. Для этого в базе данных `users` в таблице `users_online` в графе `online_value` храниться и изменяется значение недавно авторизированных пользователей. Решил сделать так: 1) Проверить кеш на наличие нужных данных 2) Если их там не оказалось, то выбираю их из БД и кеширую 3) Вывожу данные Получилось что-то подобное: PHP код:
1) Насколько безопасно хранить кешированные данные? 2) Можно ли каким то образом удалить/изменить эти данные? 3) Насколько я понимаю, данные хранятся на сервере. Значит, по идее, данные добавленные в кеш одним пользователем, будут видны другим пользователям? Т.е. если 1 пользователь сохранит данные в кеше с ключем "online_users" то другой пользователь сможет считать эти данные из кеша с этим же ключем? Поясните, пожалуйста, правильно ли я понял принцип работы Memcached?
No name. Just Linel.
Последний раз редактировалось Linel; 15.12.2010 в 17:35. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]()
Сразу направлю Вас на истинный путь:
- Желательно кэшировать статичные данные, которые практически не меняются. Таблица онлайн пользователей постоянно меняется использовать кэширование не выгодно. Советую Вам использовать таблицы Memory MySQL или файлы. По поводу ваших вопросов о memcached: 1) Достаточно безопасно. Основная уязвимость - переполнение буффера. 2) Да, можно. Но механизмы отличаются от работы БД или файлами. 3) Да, видят все пользователи, если используется один и тот же ключ. |
![]() |
![]() |
![]() |
#3 | ||
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]() Цитата:
Цитата:
No name. Just Linel.
|
||
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
![]()
Сначала ответы.
1)Безопасно. 2)Можно. 3)Да. Цитата:
Теперь о том как нужно делать правильно. Вам нужно сделать контроллер, через который вы будет работать с базой данных и с мемкешом. Контроллёр, должен выполянть запросы и кешировать их мемкешом, тем или иным способом следить за изменениями в безе и обнулять данные в мекеше при обновлении таблиц. Сделать всё это очень хорошо непросто но для небольших проектов это и не надо.
Стрелок-охотник
|
|
![]() |
![]() |
![]() |
#5 | ||
Старожил
Регистрация: 19.04.2010
Сообщений: 2,702
|
![]() Цитата:
Цитата:
|
||
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]()
Спасибо за ответы.
Цитата:
No name. Just Linel.
|
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 09.09.2008
Сообщений: 2,624
|
![]() Цитата:
Стрелок-охотник
|
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 21.02.2009
Сообщений: 372
|
![]()
Благодарю, вроде все на места встало.
No name. Just Linel.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
memcached. Вопрос взаимодействия | Виталий Желтяков | PHP | 3 | 13.11.2010 12:49 |
PHP test.php?a=1&b=1 не работает передача параметров | бедный_студент | PHP | 5 | 25.08.2010 23:08 |
Преобразование HTML-PHP в PHP с запуском в командной строке. | TERAB1T | PHP | 4 | 01.06.2010 14:14 |