Атрибут Memoize на языке Hack — время ожидания кэша

Взломать <<__Memoize>> атрибут легко кэшировать результаты метода.

Как я могу использовать его для кэширования результатов какой-либо базы данных или запроса API для ограниченное количество времени?

Допустим, мой код очень часто нуждается в некоторой информации из базы данных:

public function loadEmployees(
string $company_name,
): ImmSet<string> {
return $this->db->sqlQuery(...);
}

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

Если данные меняются, моя программа должна увидеть их в течение минуты. Я в порядке с результатами, устаревшими в течение одной минуты.

Проверил официальные документы.

1

Решение

Memoize живет только в контексте запроса. Ваш запрос занимает больше одной минуты? Если это так, Memoize не для вашего случая использования.

2

Другие решения

<<__Memoize >> Кешируются только на время существования запроса и не распределяются между запросами. Крайне маловероятно, что у вас есть HTTP-запрос, который длится более минуты, поэтому похоже, что вам нужен кеш, который используется несколькими запросами. APC обычно используется для этого (см. http://php.net/apc). Если вы действительно хотите более детальный контроль за кэшированием в запросе, вам нужно будет выполнить свой собственный просмотр, используя статический член или глобальную переменную.

3

По вопросам рекламы [email protected]