簡體   English   中英

如何使守護程序緩存服務器響應?

[英]How can I make a daemon cache a server response?

我有一個在PHP中運行的守護程序腳本。 該腳本不斷命中端點並從資源獲取響應並檢查響應。

響應通常是

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

大多數時候。

有時候,結果可能會變成

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

我有邏輯來讀取a,b和c的值並基於它們執行操作。

我的問題是,是否有辦法以某種方式緩存此響應,而不是在守護程序級別上一遍又一遍地到達終點?

還是有一種方法可以從服務器級別緩存json響應?

將對象的每個元素用作數組鍵:

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

緩存很簡單:

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

盡管您可能希望其中的一些額外邏輯使較早的條目過期,但其他操作最終將消耗內存,直到一切消失。

如果要緩存守護程序的響應,則可以使用以下一些選項

1-如果在PHP <5.5上,則可以使用apc的用戶緩存

這是保存一些隨機文本的方式(無論是JSON還是對象,您都可以正常檢索它)

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

要么

     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不會緩存操作碼,而PHP <5.4中的apc會緩存)

3-如果您在雲或多服務器環境中,也可以使用memcached,但是如果在單台計算機上,我會使用apc或apcu

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM