我的網站(由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解釋的內存數據庫可能是一個解決方案。 –