2012-09-15 53 views
0

在檢索整個保存的數據之前是否有方法檢查瞬態是否存在?檢查是否存在瞬態而無需在WordPress中檢索整個數據

根據這一頁,http://codex.wordpress.org/Transients_API,檢查保存的瞬時值是否被成功取出,下面的代碼被用於:

if (false === ($value = get_transient('value'))) { 
    // this code runs when there is no valid transient set 
} 

但這種假設檢索到的數據將(如果可用)。當使用Transient API緩存數百個網頁時,只需檢查緩存是否存在,檢索所有數據是不現實的。我不確定它是如何影響速度和內存的,但一般來說,尺寸越大,速度越慢,消耗的內存越多。

所以我想知道是否有一個簡單的方法來只檢查它是否保存或不像empty()函數。

感謝您的信息。

回答

4

這隻會檢索到期時間。

$your_transient = 'your_transient'; 
$data_timeout = get_option('_transient_timeout_' . $your_transient); 
if ($data_timeout < time()) 
    echo 'it is expired.'; 
else 
    echo 'there is a transient'; 
+0

如果要將此解決方案用於要在不同環境中運行的插件/主題,則可能會遇到使用APC或memcache的站點的一些問題。 因爲APC/Memcache將數據存儲在內存中,所以這段代碼總是會說瞬態過期。 – sven

2

如果(!get_transient('value'))應該執行該作業,它會檢查瞬態是否存在或已過期。

+3

它從數據庫內部檢索數據。你確定它不會影響記憶和服務器響應嗎? – Teno