2014-01-17 71 views
0

我有一個運行在PHP中的守護進程腳本。該腳本連續擊中一個端點並從資源獲取響應並檢查響應。如何使守護進程緩存服務器響應?

響應通常是

{"a": 1, "b": 2, "c": 3, "status" : "true"} 

的大部分時間。

偶爾,也有可能成爲該反應可能改變

{"a": 1, "b": 2, "c": 3, "status" : "false"} 

我有邏輯閱讀的A,B值和C,並基於這些操作。

我的問題是,有沒有辦法以某種方式緩存這個響應,而不是在守護進程層面一遍又一遍地觸發結束點?

或者有沒有辦法從服務器級緩存json響應?

+0

所以你將其緩存在本地,那麼如何知道它何時更改而不檢查? – 2014-01-17 02:58:15

回答

0

使用你的對象的每個元素作爲一個數組鍵:

$responses[$a][$b][$c]['status'] = true; 

緩存將是一個簡單的:

if (isset($responses[$a][$b][$c]['status'])) { 
    ... used cached value 
} else { 
    ... compute new value and store in cache 
} 

雖然你可能在那裏需要一些額外的邏輯過期舊條目,其他的你最終會吮吸內存直到事情消失。

0

如果你希望緩存從您的守護程序的響應這裏有一些選擇

1 - 如果PHP < 5.5,可以使用APC的用戶的高速緩存

這裏是如何節省一些隨機的一段文字(沒關係,如果它的JSON或一個對象,你就可以取回罰款)

apc_add('cache_key',$save_this_var, TTL); 

OR

 apc_store('cache_key',$save_this_var, TTL); 
如果保存完全相同的關鍵點別的

apc_add不會覆蓋,而apc_store將覆蓋 TTL是時間(單位:秒)要緩存的數據

現在你可以檢索像這樣的高速緩存

 $my_cache = apc_fetch('cache_key'); 

$ my_cache已經變量保存早期

2 - 如果你正在使用PHP 5.5,然後通過添加apcu模塊使用APC的用戶的高速緩存,它的工作原理完全一樣APC緩存我上面所解釋的,只是名稱更改(apcu不緩存opc頌歌而在PHP < 5.4 APC一樣)

3 - 如果你是在雲還是多服務器環境,你可以使用memcached的爲好,但如果單獨的機器上,我將與APC或apcu去

相關問題