Взломать <<__Memoize>>
атрибут легко кэшировать результаты метода.
Как я могу использовать его для кэширования результатов какой-либо базы данных или запроса API для ограниченное количество времени?
Допустим, мой код очень часто нуждается в некоторой информации из базы данных:
public function loadEmployees(
string $company_name,
): ImmSet<string> {
return $this->db->sqlQuery(...);
}
Чтобы повысить производительность, я бы хотел кешировать результаты на одну минуту.
Если данные меняются, моя программа должна увидеть их в течение минуты. Я в порядке с результатами, устаревшими в течение одной минуты.
Проверил официальные документы.
Memoize живет только в контексте запроса. Ваш запрос занимает больше одной минуты? Если это так, Memoize не для вашего случая использования.
<<__Memoize >> Кешируются только на время существования запроса и не распределяются между запросами. Крайне маловероятно, что у вас есть HTTP-запрос, который длится более минуты, поэтому похоже, что вам нужен кеш, который используется несколькими запросами. APC обычно используется для этого (см. http://php.net/apc). Если вы действительно хотите более детальный контроль за кэшированием в запросе, вам нужно будет выполнить свой собственный просмотр, используя статический член или глобальную переменную.