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
Форумы портала PHP.SU :: Версия для печати :: кэширование, когда обновлять кэш?
Форумы портала PHP.SU » » Вопросы новичков » кэширование, когда обновлять кэш?

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

1. DlTA - 28 Января, 2021 - 09:59:45 - перейти к сообщению
вопрос: как определить что данные кэша пора обновить?

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

обновление кэша по времени не интересно, уже работает так.
2. Мелкий - 28 Января, 2021 - 10:08:00 - перейти к сообщению
"в программировании есть только две сложные вещи: инвалидация кеша, выбор имени переменной, и ошибки на единицу" (Джефф Этвуд)

При обновлении данных сбрасывайте связанные с этими данными кэши. Возможно потребует порядком усилий для поиска всех мест, откуда изменения выполняются.
3. DlTA - 28 Января, 2021 - 11:03:31 - перейти к сообщению
то есть, измени данные в базе по данной таблице то все выборки где есть выборка из данной таблицы обнули

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

но сомневаюсь что будет такое...
4. Lolya - 21 Февраля, 2021 - 11:05:44 - перейти к сообщению
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.  


Разберетесь?
5. don.bidon - 24 Февраля, 2021 - 10:09:36 - перейти к сообщению
DlTA пишет:
а есть что то, чтоб свой лесопед не лепить
нужно получить список таблиц в запросе, где-то хранить

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

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

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

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

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

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

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

Тогда парсите каждый sql руками на предмет модифицирующих запросов интересуемых таблиц и сбрасывайте данные, зависящие от них. С query builder-ом было бы проще.
Заранее похихикаю, если у Вас в коде нет обёртки хотя бы поверх $dbh =
mysqli_connect(...).
8. Lolya - 14 Марта, 2021 - 11:45:54 - перейти к сообщению
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);
9. DlTA - 14 Марта, 2021 - 23:11:52 - перейти к сообщению
Lolya пишет:
по времени кеш использовать. Пример кеша:
так сейчас работает, но это не проверка на измененные данные
10. Lolya - 20 Марта, 2021 - 13:11:28 - перейти к сообщению
DlTA пишет:
так сейчас работает, но это не проверка на измененные данные

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


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

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

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

 

Powered by ExBB FM 1.0 RC1