Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: кэширование, когда обновлять кэш?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
DlTA
Отправлено: 28 Января, 2021 - 09:59:45
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




вопрос: как определить что данные кэша пора обновить?

пример: у меня хранятся список состояний заказа, этот список гружу из базы и пихаю в кэш.
обновить кэш нужно при изменении параметров в списке (название, текст в описании, текст письма, ...), КАК я могу узнать и быстро получить значение что пора обновить КЭШ???

обновление кэша по времени не интересно, уже работает так.
 
 Top
Мелкий Супермодератор
Отправлено: 28 Января, 2021 - 10:08:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




"в программировании есть только две сложные вещи: инвалидация кеша, выбор имени переменной, и ошибки на единицу" (Джефф Этвуд)

При обновлении данных сбрасывайте связанные с этими данными кэши. Возможно потребует порядком усилий для поиска всех мест, откуда изменения выполняются.


-----
PostgreSQL DBA
 
 Top
DlTA
Отправлено: 28 Января, 2021 - 11:03:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




то есть, измени данные в базе по данной таблице то все выборки где есть выборка из данной таблицы обнули

а есть что то, чтоб свой лесопед не лепить
нужно получить список таблиц в запросе, где-то хранить

но сомневаюсь что будет такое...
 
 Top
Lolya
Отправлено: 21 Февраля, 2021 - 11:05:44
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Май 2018  


Помог: 2 раз(а)




DlTA пишет:
а есть что то, чтоб свой лесопед не лепить
нужно получить список таблиц в запросе, где-то хранить


Удаление кеш-файла
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. define ('ROOT_PATH', dirname(dirname(__FILE__))."/");
  3. $rootpath = ROOT_PATH;
  4. $Blrelizs_cache = $rootpath."cache/relizs.cache";if(file_exists($Blrelizs_cache)){unlink($rootpath."cache/relizs.cache");}
  5.  

создание кеша у вас должно уже быть, если вы с ним работаете, у всех системы кеша разные.
Собственно пример:

Если нет кеша (отсутстует), то выполнить запрос ***. Иначе прочитать данные кеша.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $Blrelizs_cache = $rootpath."cache/relizs.cache";if(!file_exists($Blrelizs_cache)){
  3. // выполнить запрос на прочтение данных из базы
  4. }else
  5. // иначе считываем кеш вашей системой кеширования
  6.  


Разберетесь?
 
 Top
don.bidon
Отправлено: 24 Февраля, 2021 - 10:09:36
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2019  


Помог: 2 раз(а)




DlTA пишет:
а есть что то, чтоб свой лесопед не лепить
нужно получить список таблиц в запросе, где-то хранить

Общедоступных open source решений не искал, поисковые системы в бан пока не попали же )
Надеюсь, модифицирующие даныые запросы строятся через какой-то query builder, тогда легче всего вонзиться в него.
 
 Top
DlTA
Отправлено: 26 Февраля, 2021 - 07:08:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Lolya пишет:

Если нет кеша (отсутстует), то выполнить запрос ***. Иначе прочитать данные кеша.

это техника, это уже работает, вопрос в том когда кешу ОПА и пора делать новый

don.bidon пишет:
Общедоступных open source решений не искал, поисковые системы в бан пока не попали же )
это уже самопал, такое и самому слобать можно

don.bidon пишет:
Надеюсь, модифицирующие данные запросы строятся через какой-то query builder, тогда легче всего вонзиться в него.
зачем, все чисто запросами))
 
 Top
don.bidon
Отправлено: 04 Марта, 2021 - 14:02:37
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2019  


Помог: 2 раз(а)




DlTA пишет:

don.bidon пишет:
Общедоступных open source решений не искал, поисковые системы в бан пока не попали же )
это уже самопал, такое и самому слобать можно

don.bidon пишет:
Надеюсь, модифицирующие данные запросы строятся через какой-то query builder, тогда легче всего вонзиться в него.
зачем, все чисто запросами))

Тогда парсите каждый sql руками на предмет модифицирующих запросов интересуемых таблиц и сбрасывайте данные, зависящие от них. С query builder-ом было бы проще.
Заранее похихикаю, если у Вас в коде нет обёртки хотя бы поверх $dbh =
mysqli_connect(...).
 
 Top
Lolya
Отправлено: 14 Марта, 2021 - 11:45:54
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Май 2018  


Помог: 2 раз(а)




DlTA пишет:
это техника, это уже работает, вопрос в том когда кешу ОПА и пора делать новый

по времени кеш использовать. Пример кеша:

CODE (htmlphp):
скопировать код в буфер обмена
  1. global $CacheBlock, $k1Block_Refresh;$_cache = 'cashe-0.cache';
  2. if(!$CacheBlock->Check($_cache, $k1Block_Refresh?0:86400)){ //1 den!
  3. ****
  4. $content = "****";
  5. ****
  6. $CacheBlock->Write($_cache, $content);}else $content = $CacheBlock->Read($_cache);
 
 Top
DlTA
Отправлено: 14 Марта, 2021 - 23:11:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Lolya пишет:
по времени кеш использовать. Пример кеша:
так сейчас работает, но это не проверка на измененные данные
 
 Top
Lolya
Отправлено: 20 Марта, 2021 - 13:11:28
Post Id


Гость


Покинул форум
Сообщений всего: 69
Дата рег-ции: Май 2018  


Помог: 2 раз(а)




DlTA пишет:
так сейчас работает, но это не проверка на измененные данные

Сбрасывалку кеша не пробовали сделать в файл подтверждения действия - редактирования, удаления и что там еще у вас...
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $flist = $rootpath."cache/relizs.cache";if(file_exists($flist)){unlink($rootpath."cache/relizs.cache");}
 
 Top
DlTA
Отправлено: 21 Марта, 2021 - 11:46:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Lolya пишет:
Сбрасывалку кеша не пробовали сделать в файл подтверждения действия - редактирования, удаления и что там еще у вас...
CODE (htmlphp):
скопировать код в буфер обмена
 
$flist = $rootpath."cache/relizs.cache";if(file_exists($flist)){unlink($rootpath."cache/relizs.cache");}


ЭТО УЖЕ РАБОТАЕТ!!!!
(Добавление)
ответ тут был:

Мелкий пишет:
"в программировании есть только две сложные вещи: инвалидация кеша, выбор имени переменной, и ошибки на единицу" (Джефф Этвуд)

При обновлении данных сбрасывайте связанные с этими данными кэши. Возможно потребует порядком усилий для поиска всех мест, откуда изменения выполняются.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB