![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| nikitos1980 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
Добрый день
Хотел делать кэширование данных, но чтобы не загружать MySQL решил записывать их в память приложения (самого приложения, а не страницы). Все рекомендуют сессии, но не хочу их использовать, чтобы не пересылать cookie и опять же не загружать память приложения лишними данными. Вроде бы был глобальный массив с именем наподобие $GLOBAL (но не $GLOBAL, так как значения должны сохраняться после повторного обращения к приложению), но не могу найти информации. Помогите пожалуйста. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
в РНР данные между запросами сохраняет как раз механизм сессий. и только. остальные встроенные механизмы работают в пределах запроса. Можно хранить отдельно от конкретного процесса РНР(вариант с shared memory - для мазохистов, вариант с memcached - более распространенный), но тогда возникает другая проблема - как иденифицировать, кому какие данные принадлежат? И ты все равно возвращаешься к установке куки с неким идентификатором. т.е. возвращаешься к сессиям, только с переопределенным хранилищем. И зачем в данном случае изобретать велосипед? Кстати, переносить данные из БД в сессии или что-то самописное только из-за не стоит. Потому как логика сохранения совсем разная. К примеру, содержимое сессии, переменной или shared memory будет утеряно в результате перезапуска сервера. С данными в БД такое не случится. |
|||
|
||||
| nikitos1980 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
skyboy, мне не нужно идентифицировать информацию для каждого пользователя, а, например, просто сохранить часть веб-станицы в памяти (но я не могу использовать обычный кэш с помощью заголовкой, так как данные нужны для flash-объекта). Суть в том, что когда вечером на сайте большая нагрзка мускул гибнет, и я решил забить блок данных (который используется всеми юзерами без исключения) в память приложения. Неважно, если сервер перезапустится, в этом случае считаю кэш из мускула и запишу его в память.
Это сообщение отредактировал(а) nikitos1980 - 24.12.2010, 14:38 |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
О каком приложение речь?
|
|||
|
||||
| nikitos1980 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
BuShaRt, под "приложением" я подразумеваю процесс на сервере (программа, httpd.exe или какая загружается в память для обработки веб-запросов...)
|
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
nikitos1980, Если вы пытаетесь переписать некий httpd.exe, то причем тут PHP?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
под кеширование фрагментов страницы опять же успешно используется memcached.
если установить ПО на хостинге нет возможности(shared хостинг, к примеру), можно просто сохранять блоки в файлы. и при необходимости - выбирать данные из файлов. в зависимости от того, какой фреймворк использовали(или - не использовали) при создании сайта, подключить кеш(причем, не важно - файловый или memcached) архитектурно будет не сложно совершенно. Добавлено через 1 минуту и 9 секунд BuShaRt, ему требуется система кеширования блоков страницы. при чем тут "переписать httpd"? |
|||
|
||||
| nikitos1980 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
skyboy, Спасибо
Я думал реализовать эту несложную задачу методом, сопоставимым с аналогом в ASP.NET, где можно использовать глобальный объект Application (HttpApplicationState) и объект Dictionary (MSDN http://msdn.microsoft.com/en-us/library/xf...08(VS.85).aspx)
Это сообщение отредактировал(а) nikitos1980 - 24.12.2010, 21:13 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
каким боком - "сопоставимым"? прямого аналога описанного HttpApplicationState в РНР как таковом нет. А в разных фреймворках работа с кешем реализована по-разному. надо конкретизировать.
Добавлено через 57 секунд кроме, собственно, сохранения в кеш блока и запроса его оттуда тебе надо реализовать ещё механизм удаления устаревших данных. я бы на твоем месте не стал бы писать велосипед. |
|||
|
||||
| BuShaRt |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1391 Регистрация: 29.6.2006 Репутация: 4 Всего: 6 |
skyboy,
При том, что это он так "обозвал" это действие, чем вызвал у меня некоторое негодование. Соответственно пришлось ответить человеку на его же языке, с намеком на то, что он не совсем понимает что делает. |
|||
|
||||
| nikitos1980 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 96 Регистрация: 17.5.2008 Репутация: нет Всего: нет |
BuShaRt, какое "действие" вам было непонятно? Вы не смогли понять, что я подразумеваю под "приложением", и вам был дан исчерпывающий ответ. В теме не было ни слова про "написать httpd.exe". Может быть Вам стоит внимательнее читать тему и тогда не нужно будет разбираться в "чужом" языке, а скорее всего, стоит самому начать нормально говорить и понимать чужую речь
Добавлено через 1 минуту и 14 секунд skyboy, спасибо, я установил (уже давно) memcached. То что нужно! |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |