Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение данных в памяти приложения 
V
    Опции темы
nikitos1980
Дата 24.12.2010, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



Добрый день
Хотел делать кэширование данных, но чтобы не загружать MySQL решил записывать их в память приложения (самого приложения, а не страницы). Все рекомендуют сессии, но не хочу их использовать, чтобы не пересылать cookie и опять же не загружать память приложения лишними данными.
Вроде бы был глобальный массив с именем наподобие $GLOBAL (но не $GLOBAL, так как значения должны сохраняться после повторного обращения к приложению), но не могу найти информации. Помогите пожалуйста.
PM MAIL WWW   Вверх
skyboy
Дата 24.12.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(nikitos1980 @  24.12.2010,  10:31 Найти цитируемый пост)
но не $GLOBAL, так как значения должны сохраняться после повторного обращения к приложению

в РНР данные между запросами сохраняет как раз механизм сессий. и только. остальные встроенные механизмы работают в пределах запроса. Можно хранить отдельно от конкретного процесса РНР(вариант с shared memory - для мазохистов, вариант с memcached - более распространенный), но тогда возникает другая проблема - как иденифицировать, кому какие данные принадлежат? И ты все равно возвращаешься к установке куки с неким идентификатором. т.е. возвращаешься к сессиям, только с переопределенным хранилищем. И зачем в данном случае изобретать велосипед?
Кстати, переносить данные из БД в сессии или что-то самописное только из-за
Цитата(nikitos1980 @  24.12.2010,  10:31 Найти цитируемый пост)
чтобы не загружать MySQL

не стоит. Потому как логика сохранения совсем разная. К примеру, содержимое сессии, переменной или shared memory будет утеряно в результате перезапуска сервера. С данными в БД такое не случится.
PM MAIL   Вверх
nikitos1980
Дата 24.12.2010, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



skyboy, мне не нужно идентифицировать информацию для каждого пользователя, а, например, просто сохранить часть веб-станицы в памяти (но я не могу использовать обычный кэш с помощью заголовкой, так как данные нужны для flash-объекта). Суть в том, что когда вечером на сайте большая нагрзка мускул гибнет, и я решил забить блок данных (который используется всеми юзерами без исключения) в память приложения. Неважно, если сервер перезапустится, в этом случае считаю кэш из мускула и запишу его в память. 


Это сообщение отредактировал(а) nikitos1980 - 24.12.2010, 14:38
PM MAIL WWW   Вверх
BuShaRt
Дата 24.12.2010, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



О каком приложение речь?
PM MAIL   Вверх
nikitos1980
Дата 24.12.2010, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



BuShaRt,  под "приложением" я подразумеваю процесс на сервере (программа, httpd.exe или какая загружается в память для обработки веб-запросов...)
PM MAIL WWW   Вверх
BuShaRt
Дата 24.12.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



nikitos1980, Если вы пытаетесь переписать некий httpd.exe, то причем тут PHP?
PM MAIL   Вверх
skyboy
Дата 24.12.2010, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



под кеширование фрагментов страницы опять же успешно используется memcached.
если установить ПО на хостинге нет возможности(shared хостинг, к примеру), можно просто сохранять блоки в файлы. и при необходимости - выбирать данные из файлов.
в зависимости от того, какой фреймворк использовали(или - не использовали) при создании сайта, подключить кеш(причем, не важно - файловый или memcached) архитектурно будет не сложно совершенно.

Добавлено через 1 минуту и 9 секунд
BuShaRt, ему требуется система кеширования блоков страницы. при чем тут "переписать httpd"?
PM MAIL   Вверх
nikitos1980
Дата 24.12.2010, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



skyboy, Спасибо
Я думал реализовать эту несложную задачу методом, сопоставимым с аналогом в ASP.NET, где можно использовать глобальный объект Application (HttpApplicationState) и объект Dictionary (MSDN http://msdn.microsoft.com/en-us/library/xf...08(VS.85).aspx)
Код

// Что это значит:
// Сохраняю в приложении переменную
Application["myvar"] = "some data";
// Вывожу значение в браузер
Response.Write(Application["myvar"]);
// Открываю страницу и вижу в браузере ответ:
// some data
// ...
// Закрываю браузер. Удаляю код Application["myvar"] = "some data";
// Опять открываю страницу и вижу в браузере ответ:
// some data




Это сообщение отредактировал(а) nikitos1980 - 24.12.2010, 21:13
PM MAIL WWW   Вверх
skyboy
Дата 24.12.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



каким боком - "сопоставимым"? прямого аналога описанного HttpApplicationState в РНР как таковом нет. А в разных фреймворках работа с кешем реализована по-разному. надо конкретизировать.

Добавлено через 57 секунд
кроме, собственно, сохранения в кеш блока и запроса его оттуда тебе надо реализовать ещё механизм удаления устаревших данных. я бы на твоем месте не стал бы писать велосипед.
PM MAIL   Вверх
BuShaRt
Дата 5.1.2011, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



skyboy, 
При том, что это он так "обозвал" это действие, чем вызвал у меня некоторое негодование. Соответственно пришлось ответить человеку на его же языке, с намеком на то, что он не совсем понимает что делает.
PM MAIL   Вверх
nikitos1980
Дата 1.6.2011, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 17.5.2008

Репутация: нет
Всего: нет



BuShaRt, какое "действие" вам было непонятно? Вы не смогли понять, что я подразумеваю под "приложением", и вам был дан исчерпывающий ответ. В теме не было ни слова про "написать httpd.exe". Может быть Вам стоит внимательнее читать тему и тогда не нужно будет разбираться в "чужом" языке, а скорее всего, стоит самому начать нормально говорить и понимать чужую речь

Добавлено через 1 минуту и 14 секунд
skyboy, спасибо, я установил (уже давно) memcached. То что нужно!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1090 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.