Мой веб-сайт (обслуживаемый PHP) использует некоторые значения, которые являются дорогостоящими для вычисления (и расчет является детерминированным), поэтому я хотел бы кэшировать результат при первом запросе. Тогда я мог бы использовать эту функцию:
function MyValue($valueID) {
if (!isset($myValueCache[$valueID])) {
$myValueCache[$valueID] = ... // The long and expensive calculation.
}
return $myValueCache[$valueID];
}
Вопрос в том, как объявить $myValueCache
сохранить свою ценность между разными вызовами скрипта? Я бы назвал это «статическая переменная уровня сервера» или что-то вроде Просто static
переменная не является желаемым решением. http://www.elated.com/articles/php-variable-scope-all-you-need-to-know/ пишет: «После выхода из скрипта статическая переменная уничтожается, как это делают локальные и глобальные переменные». Я хотел бы сохранить значение, пока я явно unset
Это. Спасибо 🙂
PS. «дорогой» означает, например, доступ к базе данных. Вычисление и жесткое кодирование результата невозможно во время разработки.
Вы должны рассмотреть возможность использования любой базы данных в памяти, например, Redis или Memcached. Вы также можете попытаться кэшировать значения в файлах, но это будет медленнее, чем базы данных в памяти.
Других решений пока нет …