Мой сайт (обслуживаемый PHP) использует некоторые значения, которые дорого рассчитать (и расчет детерминирован), поэтому я хотел бы кэшировать результат по первому запросу. Тогда я мог бы использовать эту функцию:Есть ли статическая переменная на уровне сервера в 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. Например, «дорогой» означает доступ к базе данных. Вычисление и жесткое кодирование результата невозможно во время разработки.
Если пользователь задает вопрос, запишите его в сеанс, если не сохранить его в поле БД, поскольку у вас уже есть БД. Не дорого «SELECT value FROM cache WHERE id = $ valueID' – AbraCadaver
Ну, после долгого молчания, я думаю, что окончательный ответ:« В PHP нет такого объявления переменных ». (Но я не уверен, именно поэтому я спросил его.) Спасибо за рекомендуемые обходные пути. База данных в памяти с объяснением @ AbraCadaver может быть решением. –